Você está na página 1de 12

FILTROS ADAPTIVOS CON MATLAB

Los coeficientes de un filtro adaptivo sirven para identificar sistemas o filtros desconocidos, identificar sistemas inversos, cancelar ruidos o interferencias en tiempo real de las seales de entrada, predecir valores futuros de las seales, etc. Para elegir un filtro adaptivo adecuado a las necesidades del problema, hay que tener cuidado en cuanto a sus detalles. Por ejemplo, el primer detalle que se debe considerar es el trabajo que tiene que desarrollar el mismo, segn ste, se elegir el algoritmo apropiado a usarse para ese fin.

APLICACIONES DE LOS FILTROS ADAPTIVOS:


SISTEMA DE IDENTIFICACIN: una aplicacion comn es usar filtros adaptivos para identificar sistemas desconocidos, tales como la respuesta de un canal de comunicaciones desconocido o la respuesta en frecuencia de un auditorio; otras aplicaciones incluyen la cancelacin de eco y la identificacin de canales. Su esquema general tiene la siguiente forma:

IDENTIFICACIN DE UN SISTEMA INVERSO: analice el siguiente diagrama para describir lo que es una identificacin de un sistema inverso: (usado en los sistemas de telefona cuando se transmite por pares de cobre).

CANCELACIN DE RUIDO: en cancelacin de ruido, los filtros adaptivos permiten remover ruido desde una seal en tiempo real.

Luis Cabezas Tito

Procesamiento Adaptivo de Seales

Pgina 1

PREDICCIN: predecir seales puede parecer una tarea imposible, sin embargo es posible realizarlo empleando filtros adaptivos de la siguiente forma:

PROGRAMACIN CON MATLAB


IDENTIFICACIN DE UN SISTEMA CON EL COMANDO adaptlms: %Sistema pra Identificacin de un Filtro FIR de 32 coeficientes %Realizado por Luis Cabezas Tito %(500 iteraciones) x = randn(1,500); % Intrada al filtro b = fir1(31,0.5); % Sistema FIR a ser identificado n = 0.1*randn(1,500); % Observacin de la seal de ruido d = filter(b,1,x)+n; % Seal Deseada mu = 0.008; % Tamao del paso lms h = adaptfilt.lms(32,mu); [y,e] = filter(h,x,d); subplot(2,1,1); plot(1:500,[d;y;e]); title('Sistema de Identificacin de un Filtro FIR'); legend('Deseada','Salida','Error'); xlabel('ndice del Tiempo'); ylabel('Valor de la Seal'); subplot(2,1,2); stem([b.',h.Coefficients.']); legend('Actual','Estimada'); xlabel('Coeficiente #'); ylabel('Valor del Coeficiente'); grid on; FILTRO ADAPTIVO FIR USADO JUNTO AL ALGORITMO LMS %Filtro Adaptivo FIR usado junto al Algoritmo LMS %Luis Cabezas Tito clc x = randn(1,1000); % Fuente de ruido g = fir1(47,0.4); % Filtro FIR primario del modelo ded sistmea n = 0.1*randn(1,1000); % Observacin de la seal de ruido d = filter(g,1,x)+n; % Seal a ser cancelada (deseada) b = fir1(31,0.5); % FIR secundario del modelo ded sistema mu = 0.008; % Adjunto el tamao del paso LMS ha = adaptfilt.adjlms(32,mu,1,b); [y,e] = filter(ha,x,d); plot(1:1000,d,'b',1:1000,e,'r'); title('Control Activo de Ruido de una Seal de Ruido Aleatoria'); legend('Original','Atenuada'); xlabel('Tiempo'); ylabel('Valor de la Seal'); grid on;

Luis Cabezas Tito

Procesamiento Adaptivo de Seales

Pgina 2

FILTRO ADAPTIVO FIR QUE USA BLMS %Filtro Adaptivo FIR que usa BLMS %Luis Cabezas Tito x = randn(1,500); % Entrada al Filtro b = fir1(31,0.5); % Sistema FIR a ser identificado no = 0.1*randn(1,500); % Observacin de la Seal de Ruido d = filter(b,1,x)+no; % Seal Deseada mu = 0.008; % Tamao de paso del Bloque LMS n = 5; % Longitud del Bloque ha = adaptfilt.blms(32,mu,1,n); [y,e] = filter(ha,x,d); subplot(2,1,1); plot(1:500,[d;y;e]); title('Sistema de Identificacin de un Filtro FIR'); legend('Deseada','Salida','Error'); xlabel('Tiempo'); ylabel('Valor de la Seal'); subplot(2,1,2); stem([b.',ha.coefficients.']); legend('Actual','Estimada'); xlabel('Coeficiente #'); ylabel('Valor del Coeficiente'); grid on; FILTRO ADAPTIVO FIR QUE USA LA FFT BASADA EN BLMS %Filtro Adaptivo FIR que usa la FFT basada en BLMS %Luis Cabezas Tito x = randn(1,512); % Entrada al Filtro b = fir1(31,0.5); % Sistema FIR a ser Identificado no = 0.1*randn(1,512); % Observacin de la Seal de Ruido d = filter(b,1,x)+no; % Seal Deseada mu = 0.008; % Tamao del paso n = 16; % Longitud del Bloque ha = adaptfilt.blmsfft(32,mu,1,n); [y,e] = filter(ha,x,d); subplot(2,1,1); plot(1:500,[d(1:500);y(1:500);e(1:500)]); title('Sistema de Identificacin de un Filtro FIR'); legend('Deseada','Salida','Error'); xlabel('Tiempo'); ylabel('Valor de la Seal'); subplot(2,1,2); stem([b.',ha.coefficients.']); legend('actual','estimada'); grid on; xlabel('Coeficiente #'); ylabel('Valor del Coeficiente'); FILTRO ADAPTIVO FIR QUE USA UN LMS CON RETARDO %Filtro Adaptivo FIR que usa un LMS con retardo %Luis Cabezas Tito x = randn(1,500); % Intrada al Filtro b = fir1(31,0.5); % Sistema FIR a ser identificado n = 0.1*randn(1,500); % Observacin de la seal de ruido d = filter(b,1,x)+n; % Seal deseada mu = 0.008; % tamao del paso LMS. delay = 1; % Actualizacin del Retardo ha = adaptfilt.dlms(32,mu,1,delay); [y,e] = filter(ha,x,d); subplot(2,1,1); plot(1:500,[d;y;e]); title('Sistema de Identificacin de un Filtro FIR'); legend('Deseada','Salida','Error'); xlabel('Tiempo'); ylabel('Valor de la Seal'); Luis Cabezas Tito Procesamiento Adaptivo de Seales Pgina 3

subplot(2,1,2); stem([b.',ha.coefficients.']); legend('Actual','Estimada'); grid on; xlabel('Coeficiente #'); ylabel('Valor del Coeficiente'); FILTRO ADAPTIVO FIR QUE USA UN LMS CON UNA SEAL X FILTRADA %Filtro Adaptivo FIR que usa un LMS con una seal x Filtrada %Luis Cabezas Tito x = randn(1,1000); % Fuente de ruido g = fir1(47,0.4); % FIR primario para el sistema modelo n = 0.1*randn(1,1000); % Observacin de la seal de ruido d = filter(g,1,x)+n; % Seal a ser cancelada b = fir1(31,0.5); % FIR secundario para el sistema modelo mu = 0.008; % Tamao del paso LMS x-Filtrado ha = adaptfilt.filtxlms(32,mu,1,b); [y,e] = filter(ha,x,d); plot(1:1000,d,'b',1:1000,e,'r'); title('Control de Ruido Activo de una Seal de Ruido Aleatoria'); legend('Original','Atenuada'); xlabel('Tiempo'); ylabel('Valor de la Seal'); grid on; FILTRO ADAPTIVO FIR QUE USA LMS %Filtro Adaptivo FIR que usa LMS %Luis Cabezas Tito x = randn(1,500); % Entrada al Filtro b = fir1(31,0.5); % Sistema FIR a ser Identificado n = 0.1*randn(1,500); % Observation de la seal de ruido d = filter(b,1,x)+n; % Seal deseada mu = 0.008; % Tamao del paso LMS ha = adaptfilt.lms(32,mu); [y,e] = filter(ha,x,d); subplot(2,1,1); plot(1:500,[d;y;e]); title('Sistema de Identificacin de un Filtro FIR'); legend('Deseada','Salida','Error'); xlabel('Tiempo'); ylabel('Valor de la Seal'); subplot(2,1,2); stem([b.',ha.coefficients.']); legend('Actual','Estimada'); xlabel('Coeficiente #'); ylabel('Valor del Coeficiente'); grid on; FILTRO ADAPTIVO DE MNIMOS CUADRADOS NORMALIZADO NLMS %Filtro Adaptivo de Mnimos Cuadrados Normalizado nlms %Luis Cabezas Tito x = randn(1,500); % Entrada al Filtro b = fir1(31,0.5); % Sistema FIR aser identificado n = 0.1*randn(1,500); % Observacin de la seal de ruido d = filter(b,1,x)+n; % Seal deseada mu = 1; % Tamao del paso NLMS offset = 50; % Offset NLMS ha = adaptfilt.nlms(32,mu,1,offset); [y,e] = filter(ha,x,d); subplot(2,1,1); plot(1:500,[d;y;e]); legend('Deseada','Salida','Error'); title('Sistema de Identificacin de un Filtro FIR'); xlabel('Tiempo'); ylabel('Valor de la Seal'); subplot(2,1,2); Luis Cabezas Tito Procesamiento Adaptivo de Seales Pgina 4

stem([b', ha.coefficients']); legend('Actual','Estimada'); grid on; xlabel('Coeficiente #'); ylabel('Valor del Coeficiente'); FILTRO ADAPTIVO FIR CON SEAL DE DATOS %Filtro Adaptivo FIR con Seal de Datos %Luis Cabezas Tito d = 1; % Nmero de muestras del retardo ntr= 5000; % Nmero de Iteraciones v = sin(2*pi*0.05*[1:ntr+d]); % Seal Sinusoidal n = randn(1,ntr+d); % Seal de ruido x = v(1:ntr)+n(1:ntr); % Seal de entrada d = v(1+d:ntr+d)+n(1+d:ntr+d); % Seal deseada mu = 0.0001; % Tamao del paso de la Seal de Datos ha = adaptfilt.sd(32,mu); [y,e] = filter(ha,x,d); subplot(2,1,1); plot(1:ntr,[d;y;v(1:end-1)]); axis([ntr-100 ntr -3 3]); title('Perfeccionamiento Lineal Adaptivo de una seal sinusoidal de ruido'); legend('Observada','Perfeccionada','Original'); xlabel('Tiempo'); ylabel('Valor de la Seal'); [pxx,om] = pwelch(x(ntr-1000:ntr)); pyy = pwelch(y(ntr-1000:ntr)); subplot(2,1,2); plot(om/pi,10*log10([pxx/max(pxx),pyy/max(pyy)])); axis([0 1 -60 20]); legend('Observada','Perfeccionada'); xlabel('Frecuencia Normalizada (\tiempos \pi rad/muestra)'); ylabel('Densidad de Potencia Espectral'); grid on; FILTRO ADAPTIVO FIR QUE USA UN ALGORITMO DE SEAL-ERROR %Filtro Adaptivo FIR que usa un algoritmo de Seal-Error %Luis Cabezas Tito d = 1; % Nmero de muestras del retardo ntr= 5000; % Nmero de Iteraciones v = sin(2*pi*0.05*(1:ntr+d)); % Seal Sinusoidal n = randn(1,ntr+d); % Seal de Ruido x = v(1:ntr)+n(1:ntr); % Seal de Entrada --(Seal deseada retardada) d = v(1+d:ntr+d)+n(1+d:ntr+d); % Seal deseada mu = 0.0001; % tamao del paso de la Seal-Error ha = adaptfilt.se(32,mu); [y,e] = filter(ha,x,d); subplot(2,1,1); plot(1:ntr,[d;y;v(1:end-1)]); axis([ntr-100 ntr -3 3]); title('Perfeccionamiento Lineal Adaptivo de una Sinusoide con Ruido'); legend('Observada','Perfeccionada','Original'); xlabel('Tiempo'); ylabel('Valor de la Seal'); HWelch = spectrum.welch; InputPsd = psd(HWelch,x(ntr-1000:ntr)); OutputPsd = psd(HWelch,y(ntr-1000:ntr)); CompPsdEst = [InputPsd.Data/max(InputPsd.Data), OutputPsd.Data/max(OutputPsd.Data)]; subplot(2,1,2); plot(InputPsd.Frequencies/pi,10*log10(CompPsdEst)); axis([0 1 -60 20]); legend('Observada','Perfeccionada'); xlabel('Frecuencia Normalizada (\tiempos \pi rad/muestra)'); ylabel('Densidad Espectral de Potencia'); grid on; Luis Cabezas Tito Procesamiento Adaptivo de Seales Pgina 5

FILTRO ADAPTIVO FIR QUE USA UN ALGORITMO DE SEAL-SIGNO %Filtro Adaptivo FIR que usa un algoritmo de Seal-Signo %Luis Cabezas Tito d = 1; % Nmero de muestras del retardo ntr= 5000; % Nmero de Iteraciones v = sin(2*pi*0.05*(1:ntr+d)); % Seal Sinusoidal n = randn(1,ntr+d); % Seal ruido x = v(1:ntr)+n(1:ntr); % Seal de entrada --(Seal deseada retardada) d = v(1+d:ntr+d)+n(1+d:ntr+d); % Seal deseada mu = 0.0001; % Tamao del paso de la Seal-Error ha = adaptfilt.ss(32,mu); [y,e] = filter(ha,x,d); subplot(2,1,1); plot(1:ntr,[d;y;v(1:end-1)]); axis([ntr-100 ntr -3 3]); title('Perfeccionamiento Lineal Adaptivo de una Sinusoide de ruido'); legend('Observada','Perfeccionada','Original'); xlabel('Tiempo'); ylabel('Valor de la Seal'); HWelch = spectrum.welch; InputPsd = psd(HWelch,x(ntr-1000:ntr)); OutputPsd = psd(HWelch,y(ntr-1000:ntr)); CompPsdEst = [InputPsd.Data/max(InputPsd.Data), OutputPsd.Data/max(OutputPsd.Data)]; subplot(2,1,2); plot(InputPsd.Frequencies/pi,10*log10(CompPsdEst)); axis([0 1 -60 20]); legend('Observada','Perfeccionada'); xlabel('Frecuencia Normalizada (\tiempos \pi rad/muestra)'); ylabel('Densidad Espectral de Potencia'); grid on; FILTRO ADAPTIVO FIR QUE USA RLS %Filtro Adaptivo FIR que usa RLS %Luis Cabezas Tito x = randn(1,500); % Entrada al Filtro b = fir1(31,0.5); % Sistema Filr a ser identificado n = 0.1*randn(1,500); % Observacin de la seal de ruido d = filter(b,1,x)+n; % Seal deseada G0 = sqrt(10)*eye(32); % Matriz inversa de Correlacin de raiz cuadrada inicial lam = 0.99; % Factor dejado de RLS ha = adaptfilt.hrls(32,lam,G0); [y,e] = filter(ha,x,d); subplot(2,1,1); plot(1:500,[d;y;e]); title('Sistema de Identificacin de un filtro FIR'); legend('Deseada','Salida','Error'); xlabel('Tiempo'); ylabel('Valor de la Seal'); subplot(2,1,2); stem([b.',ha.Coefficients.']); legend('Actual','Estimada'); grid on; xlabel('Coeficiente #'); ylabel('Valor del Coeficiente'); FILTRO ADAPTIVO FIR QUE USA UN RLS VENTANEADO %Filtro Adaptivo FIR que usa un RLS ventaneado %Luis Cabezas Tito x = randn(1,500); % Entrada al filtro b = fir1(31,0.5); % Sistema FIR a ser identificado n = 0.1*randn(1,500); % Observacin de la seal de ruido d = filter(b,1,x)+n; % Seal deseada Luis Cabezas Tito Procesamiento Adaptivo de Seales Pgina 6

G0 = sqrt(10)*eye(32); % Matriz inversa de correlacin de raiz cuadrada inicial lam = 0.99; % Factor dejado RLS N = 64; % Longitud del bloque ha = adaptfilt.hswrls(32,lam,G0,N); [y,e] = filter(ha,x,d); subplot(2,1,1); plot(1:500,[d;y;e]); title('Sistema de Identificacin de un Filtro FIR'); legend('Deseada','Salida','Error'); xlabel('Tiempo'); ylabel('Valor de la Seal'); subplot(2,1,2); stem([b.',ha.Coefficients.']); legend('Actual','Estimada'); grid on; xlabel('Coeficiente #'); ylabel('Valor del Coeficiente'); FILTRO ADAPTIVO FIR QUE USA UNA DESCOMPOSICIN QR BASADO EN RLS %Filtro Adaptivo FIR que usa una descomposicin QR basado en RLS %Luis Cabezas Tito x = randn(1,500); % Entrada al filtro b = fir1(31,0.5); % Sistema FIR a ser identificado n = 0.1*randn(1,500); % Observacin de la seal de ruido d = filter(b,1,x)+n; % Seal deseada G0 = sqrt(.1)*eye(32); % Matriz de correlacin de raiz cuadrada inicial lam = 0.99; % Factor dejado RLS ha = adaptfilt.qrdrls(32,lam,G0); [y,e] = filter(ha,x,d); subplot(2,1,1); plot(1:500,[d;y;e]); title('Sistema de Identificacin de un Filtro FIR'); legend('Deseada','Salida','Error'); xlabel('Tiempo'); ylabel('Valor de la Seal'); subplot(2,1,2); stem([b.',ha.Coefficients.']); legend('Actual','Estimada'); grid on; xlabel('Coeficiente #'); ylabel('Valor del Coeficiente'); FILTRO ADAPTIVO FIR DE MNIMOS CUADRADOS RECURSIVO %Filtro Adaptivo FIR de mnimos cuadrados recursivo %Luis Cabezas Tito x = randn(1,500); % Entrada al filtro b = fir1(31,0.5); % Sistema FIR a ser identificado n = 0.1*randn(1,500); % Observacin de la seal de ruido d = filter(b,1,x)+n; % Seal deseada P0 = 10*eye(32); % Matriz inversa de correlacin de raiz cuadrada inicial lam = 0.99; % Factor dejado RLS ha = adaptfilt.rls(32,lam,P0); [y,e] = filter(ha,x,d); subplot(2,1,1); plot(1:500,[d;y;e]); title('Sistema de Identificacin de un Filtro FIR'); legend('Deseada','Salida','Error'); xlabel('Tiempo'); ylabel('Valor de la Seal'); subplot(2,1,2); stem([b.',ha.Coefficients.']); legend('Actual','Estimada'); xlabel('Coeficiente #'); ylabel('Valor del Coeficiente'); grid on;

Luis Cabezas Tito

Procesamiento Adaptivo de Seales

Pgina 7

FILTRO ADAPTIVO FIR QUE USA MINIMOS CUADRADOS CON VENTANA DE DESPLAZAMIENTO TRANSVERSAL %Filtro Adaptivo FIR que usa minimos cuadrados con ventana de %desplazamiento transversal %Luis Cabezas tito x = randn(1,500); % Entrada al filtro b = fir1(31,0.5); % Sistema FIR a ser identificado n = 0.1*randn(1,500); % Observacin de la seal de ruido d = filter(b,1,x)+n; % Seal deseada L = 32; % Longitud del filtro adaptivo del = 0.1; % Factor de inicializacin de constreido suave N = 64; % Longitud del bloque ha = adaptfilt.swftf(L,del,N); [y,e] = filter(ha,x,d); subplot(2,1,1); plot(1:500,[d;y;e]); title('Identificacin del sistema de un Filtro FIR'); legend('Deseada','Salida','Error'); xlabel('Tiempo'); ylabel('Valor de la Seal'); subplot(2,1,2); stem([b.',ha.Coefficients.']); legend('Actual','Estimada'); xlabel('Coeficiente #'); ylabel('Valor del Coeficiente'); grid on; FILTRO ADAPTIVO FIR QUE USA UNA VENTANA DE MINIMOS CUADRADOS RLS %Filtro Adaptivo FIR que usa una ventana de minimos cuadrados RLS %Luis Cabezas tito x = randn(1,500); % Entrada al filtro b = fir1(31,0.5); % Sistema FIR a ser identificado n = 0.1*randn(1,500); % Observacin de la seal de ruido d = filter(b,1,x)+n; % Seal deseada P0 = 10*eye(32); % Matriz inversa de correlacin inicial lam = 0.99; % Factor dejado RLS N = 64; % Block length ha = adaptfilt.swrls(32,lam,P0,N); [y,e] = filter(ha,x,d); subplot(2,1,1); plot(1:500,[d;y;e]); title('Identificacin del Sistema de un Filtro FIR'); legend('Deseada','Salida','Error'); xlabel('Tiempo'); ylabel('Valor de la Seal'); subplot(2,1,2); stem([b.',ha.Coefficients.']); legend('Actual','Estimada'); xlabel('Coeficiente #'); ylabel('Valor del Coeficiente'); grid on FILTRO ADAPTIVO FIR QUE USA UNA INVERSIN DE MATRIZ DIRECTA %Filtro Adaptivo FIR que usa una Inversin de Matriz directa %Luis Cabezas Tito D = 16; % Nmero de muestras del retardo b = exp(j*pi/4)*[-0.7 1]; % Coeficientes del Numerador de canal a = [1 -0.7]; % Coeficientes del Denominador de canal ntr= 1000; % Nmero de iteraciones s = sign(randn(1,ntr+D)) + j*sign(randn(1,ntr+D));% Seal de banda base n = 0.1*(randn(1,ntr+D) + j*randn(1,ntr+D)); % Seal de ruido r = filter(b,a,s)+n; % Seal recibida x = r(1+D:ntr+D); % Seal de entrada (Seal recibida) d = s(1:ntr); % Seal deseada (Seal QPSK retardada) mu = 0.1; % Tamao del paso Luis Cabezas Tito Procesamiento Adaptivo de Seales Pgina 8

po = 4; % Orden de proyeccin offset = 0.05; % Matriz de covarianza por distancia ha = adaptfilt.ap(32,mu,po,offset); [y,e] = filter(ha,x,d); subplot(2,2,1); plot(1:ntr,real([d;y;e])); title('Componentes en Fase'); legend('Deseada','Salida','Error'); xlabel('Tiempo'); ylabel('Valor de la Seal'); subplot(2,2,2); plot(1:ntr,imag([d;y;e])); title('Componentes en Cuadratura'); legend('Deseada','Salida','Error'); xlabel('Tiempo'); ylabel('Valor de la Seal'); subplot(2,2,3); plot(x(ntr-100:ntr),'.'); axis([-3 3 -3 3]); title('Grfica Dispersa de la Seal Recibida'); axis('square'); xlabel('Real[x]'); ylabel('Imag[x]'); grid on; subplot(2,2,4); plot(y(ntr-100:ntr),'.'); axis([-3 3 -3 3]); title('Grfica Dispersa de la Seal Ecualizada'); axis('square'); xlabel('Real[y]'); ylabel('Imag[y]'); grid on FILTRO ADAPTIVO FIR QUE USA UNA MATRIZ DE ACTUALIZACIN RECURSIVA %Filtro Adaptivo FIR que usa una matriz de actualizacin recursiva %Luis Cabezas Tito D = 16; % Nmero de muestras de retardo b = exp(1j*pi/4)*[-0.7 1]; % Coeficientes del Numerador de canal a = [1 -0.7]; % Coeficientes del Denominador de canal ntr= 1000; % Nmero de iteraciones s = sign(randn(1,ntr+D)) + 1j*sign(randn(1,ntr+D)); % Banda base n = 0.1*(randn(1,ntr+D) + 1j*randn(1,ntr+D)); % Seal de ruido r = filter(b,a,s)+n; % Seal recibida x = r(1+D:ntr+D); % Seal de entrada (Seal recibida) d = s(1:ntr); % Seal deseada (Seal QPSK retardada) mu = 0.1; % Tamao del paso po = 4; % Orden de proyeccin offset = 0.05; % Offset ha = adaptfilt.apru(32,mu,po,offset); [y,e] = filter(ha,x,d); subplot(2,2,1); plot(1:ntr,real([d;y;e])); title('Componentes en Fase'); legend('Deseada','Salida','Error'); xlabel('Tiempo'); ylabel('Valor de la Seal'); subplot(2,2,2); plot(1:ntr,imag([d;y;e])); title('Componentes en Cuadratura'); legend('Deseada','Salida','Error'); xlabel('Tiempo'); ylabel('Valor de la Seal'); subplot(2,2,3); plot(x(ntr-100:ntr),'.'); axis([-3 3 -3 3]); title('Grfica Dispersa de la Seal Recibida'); axis('square'); xlabel('Real[x]'); ylabel('Imag[x]'); grid on; subplot(2,2,4); plot(y(ntr-100:ntr),'.'); axis([-3 3 -3 3]); title('Grfica Dispersa de la Seal Ecualizada'); axis('square'); xlabel('Real[y]'); ylabel('Imag[y]'); grid on; FILTRO ADAPTIVO FIR QUE USA UN BLOQUE AFIN DE PROYECCIN %Filtro Adaptivo FIR que usa un bloque afin de proyeccin %Luis Cabezas Tito D = 16; % Retardo b = exp(1j*pi/4)*[-0.7 1]; % Coeficientes del Numerador a = [1 -0.7]; % Coeficientes del Denominador ntr= 1000; % Nmero de iteraciones s = sign(randn(1,ntr+D))+1j*sign(randn(1,ntr+D));% Seal Banda base Luis Cabezas Tito Procesamiento Adaptivo de Seales Pgina 9

n = 0.1*(randn(1,ntr+D) + 1j*randn(1,ntr+D)); % Seal de ruido r = filter(b,a,s)+n; % Seal recibida x = r(1+D:ntr+D); % Seal de entrada(Seal recibida) d = s(1:ntr); % Seal deseada (Seal QPSK retardada) mu = 0.5; % Tamao del paso po = 4; % Orden de proyeccin offset = 1.0; % Offset la matriz de covarianza ha = adaptfilt.bap(32,mu,po,offset); [y,e] = filter(ha,x,d); subplot(2,2,1); plot(1:ntr,real([d;y;e])); title('Componentes en Fase'); legend('Deseada','Salida','Error'); xlabel('Tiempo'); ylabel('Valor de la Seal'); subplot(2,2,2); plot(1:ntr,imag([d;y;e])); title('Componentes en Cuadratura'); legend('Deseada','Salida','Error'); xlabel('Tiempo'); ylabel('Valor de la Seal'); subplot(2,2,3); plot(x(ntr-100:ntr),'.'); axis([-3 3 -3 3]); title('Grfica Dispersa de la Seal Recibida'); axis('square'); xlabel('Real[x]'); ylabel('Imag[x]'); grid on; subplot(2,2,4); plot(y(ntr-100:ntr),'.'); axis([-3 3 -3 3]); title('Grfica Dispers de la Seal Ecualizada'); axis('square'); xlabel('Real[y]'); ylabel('Imag[y]'); grid on;

FILTRO KALMAN
>> dspadpt3

Para saber ms sobre el Filtro Kalman con MATLAB, acceder a demo del mismo luego buscar por Kalman. Se tendr la ventana de la pgina siguiente.

Luis Cabezas Tito

Procesamiento Adaptivo de Seales

Pgina 10

Investigar cada ejemplo con problemas concretos, es decir, ejecutarlos en MATLAB. Estudiar a detalle el ejemplo de Radar Tracking y otros.

Luis Cabezas Tito

Procesamiento Adaptivo de Seales

Pgina 11

----- oOo -----

Luis Cabezas Tito

Procesamiento Adaptivo de Seales

Pgina 12

Você também pode gostar