function rick = ricker(leng,dt,f0)

%% =================================================================
%% RICKER: FUNCION QUE GENERA UNA ONDICULA DE RICKER
%%
%% rick(t) = [ 1 - 2*(pi*f0*t)^2 ] * exp [ - (pi*f0*t)^2 ]
%%
%% =================================================================
%%
%% rick = ricker(leng,dt,f0)
%%
%% ENTRADA
%%
%% leng:  [ms] Longitud en tiempo
%% dt:    [ms] Intervalo de muestreo en tiempo
%% f0:    [Hz] Frecuencia central
%%
%% SALIDA
%%
%% rick:  Ondícula de Ricker en tiempo
%%
%% EJEMPLO
%%
%% rw = ricker(100,2,20)
%% 

% Recalculo los parámetros para tener número impar de muestras

M = round(leng/(2*dt)) ; % Parte entera de la mitad del numero de muestras
N = 2*M+1              ; % Numero de muestras de la ondicula

% Genero la ondícula de Ricker

for n = 1:N
  t = dt * (n-M-1) / 1000 ; % (ms)
  aux = pi*f0*t ;
  rick(n) = ( 1-2*aux^2 ) * exp( -aux^2 ) ;
endfor

%% =================================================================
%% Gráficos
%% =================================================================
%%
%% graf = 1 --> Grafico la ondícula de Ricker generada
%% graf = 0 --> No grafico la ondícula de Ricker generada
%%

graf = 0 ;

if graf == 1

  % Grafico la ondícula
  
  figure(11); clf;
  hold on
  axis([-M*dt,M*dt,-1.1,1.1])
  stem((-M:M).*dt,rick)
  plot((-M:M).*dt,rick)
  title('Ondicula de Ricker')
  hold off

  % Guardo el grafico en un postscript
  
  print('ricker.eps','-depsc')

end
