function [out, memoria, parametros] = leadLag(in, memoria, ...
fs, primera, parametros)
%------------------------------------------------------------------------
%| function [out, memoria, parametros] = leadLag(in, memoria, ...
%| fs, parametros)
%------------------------------------------------------------------------
%| Funcin que simula la accin de un fltro Lead Lag activo. Se ha
%| implementado empleando la transformacin bilineal.
%|
%| Est diseada para filtrar una sola muestra y devolver
%| las condiciones finales. Se debe llamar dentro de un bucle.
%| Hay operaciones redundantes, ya que solo hara falta
%| realizarlas 1 vez y se harn tantas veces como iteraciones
%| tenga el bucle. Se ha escogido as por legibilidad del cdigo.
%|
%| NO REALIZA VALIDACIN DE LOS PARMETROS DE ENTRADA
%|
%| Entradas:
%| 1.- IN = muestra de la seal de entrada.
%| 2.- MEMORIA = vector fila con las condiciones a aplicar
%| 3.- FS = frecuencia de muestreo
%| 4.- PRIMERA = bandera que indica si es la 1 iteracin
%| 5.- PARAMETROS = matriz que contiene todos lo parmetros
%| del receptor:
%| PLL : [ Kv , Wn , Psi, resp ]
%| FILTRO-LAZO : [ TAU1, TAU2, 0 , 0 ]
%| CTES. FILTRO-LAZO DIGITAL: [ b0 , b1 , 1 , b1 ];
%|
%| La matriz de parmetros est ideada para que el PLL conforme un bloque,
%| del que el usuario solo debe conocer los parmetros tpicos del lazo del
%| PLL (1 fila)
%| El resto de parmetros los calcularn funciones particulares, de
%| esta forma es muy simple reemplazar el Lead-Lag empleado por otro
%| filtro del lazo cualquiera o usar una transformacin Invariante al Impulso
%| en lugar de una Bilineal.
%|
%| Salidas:
%| 1.- OUT = muestra de salida tras el filtrado
%| 2.- MEMORIA = vector con las cond. finales
%| 3.- PARAMETROS = matriz con los parmetros del demodulador BPSK
%-------------------------------------------------------------------------
%| Autor: Cesar Delgado
%| Fecha: 19-Abril-2.004
%-------------------------------------------------------------------------
% 1.- Clculo de las ctes. del filtro
%------------------------------------
pCTES = 3; % Posicin de los parmetros del filtro digital
if primera,
pLEAD = 2;
TAU1 = 1;
TAU2 = 2;
cte = 2*fs;
% Numerador [b0 , b1]
parametros(pCTES, 1:2) = [1+cte*parametros(pLEAD, TAU2) 1-cte*parametros(pLEAD, TAU2)];
% Denominador [b0 , b1 , a0 , a1]
parametros(pCTES, 3:4) = [1+cte*parametros(pLEAD, TAU1) 1-cte*parametros(pLEAD, TAU1)];
% Normalizacin [b0/a0 , bi/a0 , 1 , a1/a0]
parametros(pCTES, 1:4) = parametros(pCTES, 1:4)./parametros(pCTES, 3);
end;
% 2.- Filtrado
%-------------
out = parametros(pCTES, 1) *in + memoria(1);
memoria(1) = parametros(pCTES, 2) *in - parametros(pCTES, 4) *out;