%% =================================================================
%% ANALIZANDO LA ONDICULA DE RICKER
%%
%% !OBS: el directorio debe contener la subrutina ricker.m
%% =================================================================

clear all;

% Parámetros de la ondícula de Ricker
leng  = 100  ; % (ms) Longitud en tiempo
dt    = 2   ; % (ms) Intervalo de muestreo en tiempo
f0    = 20  ; % (Hz) Frecuencia central

% Llamo a la subrutina ricker y defino la ondícula
rw = ricker(leng,dt,f0);
N = length(rw); % Obs: N es impar
M  = (N - 1)/2;

fs = 1000/dt; % frecuencia de muestreo (Hz)
df = fs/N   ; % intervalo en frecuencia (Hz)

% Calculo el espectro de amplitud 
RW = abs(fft(rw));

% Muestreo la respuesta analítica
for i = 1:N
  f = (i-1)*df;
  RW_an(i) = (2/sqrt(pi))*(f^2/f0^3)*exp(-(f/f0)^2);
end

% Normalizo 
RW_an = fs*RW_an;

% =================================================================
% GRAFICO
% =================================================================

figure(1); clf;

% En tiempo
  
subplot(2,1,1);
stem((-M:M).*dt,rw); hold on
plot((-M:M).*dt,rw,';rw_n;'); hold off 
axis([-M*dt,M*dt,-1.1,1.1])
title('Ondicula de Ricker')
xlabel('t [ms]')
ylabel('ricker_n')

% En frecuencia

subplot(2,1,2);
stem((0:N-1)*df,RW,'r'); hold on
plot((0:N-1)*df,RW,';|RW(f)|;ro')
plot((0:N-1)*df,RW_an,';|RW_{an}(f)|;g'); hold off
xlabel('f [Hz]')
ylabel('|RICKER(f)|')

% Guardo un .eps con el gráfico generado:
%print('plot_ricker.eps','-depsc');
