% ================================================================
% DECIMACION DE UNA ONDICULA DE RICKER.
%
% A medida que se aumenta la frecuencia central de la ondicula, el dato
% decimado sufre de aliasing en frecuencia. Una manera de disminuir los
% efectos de aliasing consiste en aplicar un filtro pasabajos como paso
% previo a la decimacion.
%
% OBS: el directorio debe contener la subrutina ricker.m
% ================================================================


clear all; close;

%  Ondícula de Ricker  muestreada a 2 ms

leng = 101  ; % (ms) Longitud en tiempo
dt   = 2    ; % (ms) Intervalo de muestreo en tiempo
f0   = 40   ; % (Hz) Frecuencia central

% Llamo a la subrutina ricker y defino la ondícula
s  = ricker(leng,dt,f0);
Ns = length(s);
Ms = (Ns - 1)/2;
t  = (-Ms:Ms)*dt;

% DECIMACION a k*dt ms

k = 2;

% b) Decimacion

sd = s(1:k:Ns); % se toma muestras cada dos puntos de la senal original
Nd = length(sd);


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

N2 = 1024; % zero padding

% Espectro de la ondícula con zero padding
s2     = s;
s2(N2) = 0;
S      = fft(s2);

% Espectro de la ondícula decimada con zero padding
sd2     = sd;
sd2(N2) = 0;
SD      = fft(sd2);

dw = 2*pi/N2;

subplot(2,1,1);
hold on
plot((0:Ns-1),s,'k')
plot((0:Ns-1),s,'bo;Original;',"markersize",3)
plot((0:Ns-1),s,'b',"markersize",3)
plot((0:Nd-1)*k,sd,'ro;Decimada;');
%stem((0:Nd-1)*k,sd,'r',"markersize",4)
hold off     
axis([ 0 Ns-1 1.2*min(s) 1.2*max(s) ]);
xlabel('n');
ylabel('h_n')


subplot(2,1,2);
plot((0:N2-1).*dw,abs(S),'b-;Original;'); hold on
plot((0:N2-1).*dw,abs(SD),'r-;Decimada;'); hold off     
xlabel('{/Symbol w}');
ylabel('|H_k({/Symbol w})|')
xt      = 0:pi/2:2*pi;
xtlabel = ['0';'{\pi}/2';'{/Symbol p}';'(3/2){\pi}';'{2\pi}'];

set(gca,"xtick",xt,"xticklabel",xtlabel);
axis([0,2*pi,-0.5,5+max(abs(S))]);

% ===================================================================
% Salida
% ===================================================================

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