Sie sind auf Seite 1von 6

UNIVERSIDAD NACIONAL DE SAN AGUSTIN

FACULTAD DE PRODUCCION Y SERVICIOS


ESCUELA PROFESIONAL DE INGENIERIA ELECTRONICA

CURSO:

PROCESAMIENTO DIGITAL DE SEÑALES

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.

Figura 1: esquema de reconstrucción de señal con ruido.

%----------------------------------
% Filtrado Adaptativo
% Algoritmo LMS
%----------------------------------
close all; clear all;

[s, fs] = audioread('E:\gianni\13 semestre\pds ferrel\seno.wav');


% s es la señal seno
s=s';
% N longitud de la señal
N=length(s);
% tiempo de muestreo
t=0:1:N-1;
t=t/fs;
% x es el ruido aleatorio
x=0.8*(rand(1,N)-0.5);
% x1 es el ruido retardado
x1=filter([0 0 0 0 0 0.5],1,x);
% d es la suma de la señal mas el ruido retardado
d=s+x1;
%mu para formula<
mu=0.01;
% Nw es la longuitud del filtro
Nw=32;
w=zeros(1,Nw);

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);

2. COMPARACION DE LAS SEÑALES GENERADAS EN AUDACITY: mediante


el programa AUDACITY abrimos los audios generados desde Matlab los cuales
nos muestran la señal con el ruido procesado añadido y el ruido puro.

Figura 2: arriba- señal más ruido procesado. Abajo- ruido puro.

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.

#include "DSK6713_AIC23.h" // codec


Uint32 fs=DSK6713_AIC23_FREQ_48KHZ; //Frecuencia de trabajo
#define beta 1E-10 //tasa de convergencia para actualizar coeficientes
#define N 30 //numero de coeficientes
#define LEFT 0 //canal izquierdo
#define RIGHT 1 //canal derecho
float w[N]; //coeficientes para el filtro adaptativo
float delay[N]; //entrada para el filtro adaptativo(ruido, delay por la conolucion)
short output; //salida general
short out_type = 1; //salida para desplazar
volatile union{unsigned int uint; short channel[2];}AIC23_data;

interrupt void c_int11() //ISR


{
short i;
float yn=0,//salida del filtro adapattivo
E=0, // señal restaurada o error
desired=0, // señal deseada
noise=0;// ruido puro

AIC23_data.uint = input_sample(); //entrada de ambos canales


desired =(AIC23_data.channel[LEFT]);//input left channel
noise = (AIC23_data.channel[RIGHT]);//input right channel
delay[0] = noise; //entrada para el filtro adaptativo(delay por la convolucion)

//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
}

output_sample(output); //resultado de salida general


return;
}

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.

Figura 3: diagrama de bloques de conexión con la DSK-6713

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.

Das könnte Ihnen auch gefallen