Beruflich Dokumente
Kultur Dokumente
CURSO:
TEMA:
FILTRO ADAPTATIVO
ALUMNOS:
CABALLERO CAIRO KEVIN CUI: 20110800 ____________
RODRIGUEZ PINTO GIANNI CUI: 20120451 ____________
GUZMAN VASQUEZ CARLA CUI: 20133066 ____________
FECHA: 17-07-2018
Arequipa - Perú
2018-A
1
DESCRIPCION DEL PROCESO DE CREACION
DEL FILTRO ADAPTATIVO
1. DISEÑO DEL FILTRO EN MATLAB: mediante la aplicación de MATLAB
diseñamos un programa para poder importar un audio de un solo canal y sumarle
un ruido previamente procesado, luego generamos el algoritmo LMS para poder
utilizarlo con el ruido original y posteriormente restársela a nuestra señal con
ruido; luego volvemos a guardar todas las señales para poder compararlas.
%----------------------------------
% Filtrado Adaptativo
% Algoritmo LMS
%----------------------------------
close all; clear all;
2
y=zeros(1,N);
% la variable e vendria a ser la señal restaurada
e=y;
for m=Nw+1:1:N-1
sum=0;
for i=1:1:Nw
sum=sum+w(i)*x(m-i+1);
end
y(m)=sum;
e(m)=d(m)-y(m);
for i=1:1:Nw
w(i)=w(i)+2*mu*e(m)*x(m-i+1);
end
end
zz=[d;x];
zz=zz';
audiowrite('d_mas_x.wav',zz,fs);
subplot(2,1,1);
plot(t,s);grid;title('Señal original');
subplot(2,1,2);
plot(t,d);grid;title('Señal original + Ruido');
pause;
subplot(2,1,1);
plot(t,s);grid;title('Señal original');
subplot(2,1,2);
plot(t,e);grid;title('Señal restaurada');
audiowrite('arch_voz_ruid.wav',d,fs);
audiowrite('arch_voz_rest.wav',e,fs);
3
3. CREACION DE FILTRO ADAPTATIVO EN CCS PARA TIEMPO REAL:
mediante el programa CODE COMPOSER STUDIO, creamos un código que
basado en un fitlro FIR tome coeficientes y los actualice, luego convoluye cada
dato con los datos de la señal de ruido para finalmente restar la señal más el
ruido procesado con el ruido desfasado puro. Finalmente lo cargamos a nuestra
tarjeta DSK-6713.
//Filtro FIR
for (i = 0; i < N; i++)
yn += (w[i] * delay[i]); //convolucion para el filtro FIR
E = (desired) - yn; // Error o señal restaurada
for (i = N-1; i >= 0; i--) //Actualizacion coeficientes o pesos y los retardos(ruido como
entrada para el filtro adaptativo)
{
w[i] = w[i] + beta*E*delay[i]; //coeficientes
delay[i] = delay[i-1]; // delays
}
4
void main()
{
short T=0;
for (T = 0; T < 30; T++)// numero de coeficients del filtro
{
w[T] = 0; //inicaializacion coeficientes
delay[T] = 0; //inicializacion delay samples
}
comm_intr(); //init DSK, codec, McBSP
while(1); //infinite loop
}
4. COMPROBACION DEL FUNCIONAMIENTO DEL FILTRO: con ayuda del programa
AUDACITY grabamos un audio medianamente saturado y luego el mismo audio lo
reproducimos hacia la tarjeta para que de esta retorne el nuevo audio que será grabado
en el mismo programa inicial para comparar su espectro en frecuencia.
En el Audacity grabamos la señal restaurada y la eliminación del ruido para hacer su análisis;
en la figura4 observamos ambas señales en función del tiempo.
5
Figura 4: comparación entre la señal con ruido y la señal procesada sin ruido.
CONCLUSIONES
El audio debe tener un volumen mediano con una saturación media- alta para
poder apreciar perfectamente la función del filtro.
Presentamos problemas con el Beta usado en el algoritmo LMS, el cual nos
provocaba un retraso en el inicio de restauración de la señal de
aproximadamente 3.5 segundos por lo que al recalibrarlo lo redujimos a 3
segundos.
También debimos trabajar con un archivo de audio original de un solo canal para
añadirle en el otro canal el ruido, cosa que no nos resulto con un audio de doble
canal.
Como vemos en la imagen final siempre tiene un retraso en la obtención de la
señal, pero además, hay otro retraso de adaptación de señal el cual mejora
progresivamente la restauración de nuestra señal senoidal; el ruido fue eliminado
completamente al final de nuestro filtro.