www.pudn.com > demodula.rar > leadLag.m, change:2006-02-02,size:3155b


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;