% ============================================================
% INTERPOLACIÓN SINC EN TIEMPO
%
% IN     h:   secuencia de entrada
%        dt1: intervalo de muestreo de entrada
%        dt2: intervalo de muestreo de salida
%
% OUT    hi:  secuencia interpolada
%
% TEOREMA DEL MUESTREO
%  "Para una señal de BANDA LIMITADA digitalizada según el 
%   criterio de NYQUIST y tomando INFINITAS muestras,
%   puede recuperarse la señal analógica original."
%
%  Aqui se muestra a nivel numérico que en la porción central
% las condiciones del teorema son mejor representadas, obteniéndose
% la cosinusoide a partir de muestras al intervalo dado por
% Nyquist. Los efectos de borde ponen en evidencia que no tenemos
% un dato digitalizado a infinitas muestras.
%
% EJERCICIO: analizar que sucede si se usa una sinusoide.
%
% ============================================================

clear all ;
clear all ;
close all ;
clf ;

% ============================================================
% Relación de interpolación
% ============================================================

k = 10; 

% ============================================================
% Cargo secuencia y  normalizo:
% ============================================================

f0=10; T0=1/f0; % Hz
fM=2.0*f0;
dt=1/fM;

t = (0:dt:30*T0);
h = cos(2*pi*f0*t);

% caso sinusoide

%fM=2.0*f0  % observacion b)
%%fM=2.5*f0; % observacion a)
%dt=1/fM;
%t = (0:dt:30*T0);
%h = sin(2*pi*f0*t); % observacion a)
%h = sin(2*pi*f0*t+2*pi/10); % observacion b)

% Observación  en el  caso de  la  sinusoide: a) fM  = 2.5*f0  (levemente
% superior a Nyquist)  alcanza para detectar la sinusoide  y salir del
% cero. b) Lo mismo  si hay una pequeña  fase en el argumento  del seno y
% uso fM=2*f0.  Por  ejemplo h = sin(2*pi*f0*t+phi),  devuelve un seno
% con la amplitud de sin(phi). Probar phi=2*pi/10 a modo ilustrativo.

N = length(t) ; % Número de muestras de la secuencia original



% ============================================================
% Secuencia interpolada hi
% ============================================================

 hi=sinc_interp(h,k-1);  % funcion externa de la catedra  

 Ni=length(hi);
 
 dti=dt/k;
 ti = (0:Ni-1)*dti;
 Ni= length(ti);
 

% ============================================================
% GRAFICOS
% ============================================================

% ------
% TIEMPO
% ------

figure(1) ;
subplot(3,1,1)
plot(t,h,';original;bo'); 
xlabel('t [s]');
ylabel('h_n')
axis([t(1),t(N),-2.2,2.2])

subplot(3,1,2)
hold on
plot(ti,hi,';interpolada;r') ;
plot(t,h,'bo'); 
%stem((0:Ni-1)*dt2,hi,'r');
%stem((0:N-1)*dt1,h,'b') ;
hold off
xlabel('t [s]');
ylabel('h_n')
axis([t(1),t(N),-2.2,2.2])

subplot(3,1,3)
hold on
plot(ti,hi,'ro-') ;
plot(t,h,'bo'); 
hold off
xlabel('t [s]');
ylabel('h_n')
axis([1,2,-1.2,1.2])


% ============================================================
% SALIDA
% ============================================================

%print('sinc_interp_teorema_muestreo.eps','-depsc');
