% =================================================================
% Cambio lineal en la fase de la TDF de una ondicula de Ricker para
% observar el respectivo desplazamiento en tiempo.

% Aqui queda en  evidencia el caracter periodico  del dominio temporal
% al  considerar la  TDF, ya  que  la ondicula  sale por  un lado  del
% dominio y entra por el otro.

% OBS: el directorio debe contener el codigo "ricker.m"
% =================================================================

clear all; close all;

% -----------------------
% Dato
% -----------------------

% Parametros de la ondícula de Ricker
leng  = 200  ; % (ms) Longitud en tiempo
dt    = 1   ; % (ms) Intervalo de muestreo en tiempo
f0    = 30 ; % (Hz) Frecuencia central

% Llamo a la subrutina ricker y defino la ondícula
[r,N] = ricker(leng,dt,f0);
R=fft(r);
w=(0:N-1)*(2*pi/N);


% ---------------------
% Cambio lineal en la fase
% ---------------------

step=(N/10);

for k = 0:1:N        % numero de muestras a desplazar

k  = ceil(k)         % (para que tome k=N en el ultimo paso)
% k  = -k;              % desplazamiento hacia la izquierda
RR = R.*exp(-1i*w*k); % corrimiento en fase lineal en frecuencia
rr = real(ifft(RR));  % desplazamiento en tiempo
phi = unwrap(-angle(exp(-1i*w*k)));
%phi = -angle(exp(-1i*w*k));
%phi = (-angle(RR));
% ---------------------
% GRAFICOS
% ---------------------

figure(1)
clf; % comentar para ver superpuestos los desplazamientos
hold on
plot(r,'c;k=0;')
plot(rr,'b;|k|>0;','linewidth',1.5)
hold off
xlabel('n')
ylabel('r_n')
axis([0 N-1 -1 1.3])
title(['Corrimiento de fase lineal en frecuencia / desplazamiento en tiempo'])
sleep(0.1)

end
