www.pudn.com > demodula.rar > leadLag.m
function [out, memoria, parametros] = leadLag(in, memoria, ...
fs, primera, parametros)
%------------------------------------------------------------------------
%| function [out, memoria, parametros] = leadLag(in, memoria, ...
%| fs, parametros)
%------------------------------------------------------------------------
%| Función que simula la acción de un fltro Lead Lag activo. Se ha
%| implementado empleando la transformación bilineal.
%|
%| Está diseñada para filtrar una sola muestra y devolver
%| las condiciones finales. Se debe llamar dentro de un bucle.
%| Hay operaciones redundantes, ya que solo haría falta
%| realizarlas 1 vez y se harán tantas veces como iteraciones
%| tenga el bucle. Se ha escogido así por legibilidad del código.
%|
%| NO REALIZA VALIDACIÓN DE LOS PARÁMETROS DE ENTRADA
%|
%| Entradas:
%| 1.- IN = muestra de la señal 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º iteración
%| 5.- PARAMETROS = matriz que contiene todos lo parámetros
%| del receptor:
%| PLL : [ Kv , Wn , Psi, resp ]
%| FILTRO-LAZO : [ TAU1, TAU2, 0 , 0 ]
%| CTES. FILTRO-LAZO DIGITAL: [ b0 , b1 , 1 , b1 ];
%|
%| La matriz de parámetros está ideada para que el PLL conforme un bloque,
%| del que el usuario solo debe conocer los parámetros típicos del lazo del
%| PLL (1º fila)
%| El resto de parámetros los calcularán funciones particulares, de
%| esta forma es muy simple reemplazar el Lead-Lag empleado por otro
%| filtro del lazo cualquiera o usar una transformación 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 parámetros del demodulador BPSK
%-------------------------------------------------------------------------
%| Autor: Cesar Delgado
%| Fecha: 19-Abril-2.004
%-------------------------------------------------------------------------
% 1.- Cálculo de las ctes. del filtro
%------------------------------------
pCTES = 3; % Posición de los parámetros 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)];
% Normalización [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;