% =================================================================
% DIGITALIZACION DE UN COSINUSOIDE  A DISTINTOS INTERVALOS DE MUESTREO
% El Aliasing  se hace evidente  cuando no  se cumple la  condición de
% Nyquist.
% =================================================================

clear all ; close all % Limpio variables
clf;                  % Limpio figuras


f = 10   % frecuencia de la senal, [Hz]
T = 1/f  % periodo de la senal, [s]

fM = 2*f;        % Frecuencia de muestreo, [Hz].
fN = 0.5*fM       % Frecuencia de Nyquist (A partir de aqui, ALIASING)

tmax=10*T; % tiempo maximo para graficar la senal (10 periodos)


% A fines de comparar con una senal bien muestreada:

dt0  =  (1/fM)/5      % Intervalo de muestreo para evitar aliasing, s.
t2   = (0:dt0:tmax);  % Vector de tiempos asociado a dt2.
ss   = cos(2*pi*f*t2);  % Senal bien muestreada


dt = 1/fM*(0.1:0.1:4); % Intervalos de muestreo considerados.

for i=1:length(dt)
    
    t = (0:dt(i):tmax) ; % Vector de tiempos asociado a dt     
    s = cos(2*pi*f*t) ; % Sinusoide de frecuencia f(i)
    clf
    
    subplot(2,1,1)
    hold on
    plot(t2,ss,';senal;-b')    % Grafico (senal bien muestreada)
    plot(t,s,';muestreado;or') % Grafico (puntos de la senal muestreada)
    plot(t,-2.5,'ko') %  muestras
    hold off
    axis([0,tmax,-2.5,2.5]) ; 
    key = num2str(dt(i)); 
    text(0.01,2,strcat('dt=',key,'s')) % Etiqueta del gráfico


    subplot(2,1,2)
    title("resultado")
    hold on
    plot(t,s,';muestreado;or') % Grafico (puntos de la senal
                               % muestreada)
    plot(t,s,'-g')             % Grafico (interpolacion lineal
                               % entre los puntos)
    plot(t,-2.5,'ko') %  muestras
    axis([0,tmax,-2.5,2.5]) ; 
    hold off    
    pause(0.3)
end
% Genero eps y lo guardo
%print(strcat('nyquist.eps'),'-deps')
