Sie sind auf Seite 1von 9

ESCUELA PROFESIONAL DE INGENIERA

ELECTRNICA

LABORATORIO N 1
CANCELACION ADAPTIVA DE RUIDOCON ADALINE

CURSO: CONTROL INTELIGENTE.

DOCENTE: ING. RICARDO RODRIGUEZ BUSTINZA

ALUMNO: TINEO QUISPE ROLAN


CODIGO: 1223220597
I.- OBJETIVO
Implementar el algoritmo de un filtro adaptativo en Matlab, para la
cancelacin de ruido en una seal de audio, utilizando una neurona
adaline.

II.- MARCO TEORICO

2.1.- ADALINE (Adaptive Linear Element)

Desarrollada por Widrow & Hoff (1960)

La Adaline puede ser vista como el bloque de construccin lineal


mas pequeo de las redes neuronales artificiales.

Similar al perceptron, es capaz de clasificar patrones linealmente separables a


principal diferencia aqui esta en como se crea la seal de error.

2.2.- ESTRUCTURA DE LA ADALINE

x w y
y s
x w + sgn(s)

. . -
+
. . + d
x w

T
ALGORITMO e=dw x

FIGURA N 1.- Se muestra la estructura de un ADELINE


x w
x w


.
wT x y wT x
.
.
w b
x
FIGURA N 2.- Se muestra la estructura de un ADELINE con una salida de

Funcin lineal.

2.3.- SALIDA DE LA ADALINE

La salida de la neurona es la suma pesada de sus entradas

Vector de
pesos

y wi xi wT x
i
vector de entrada
Estimado de la neurona de la
salida deseada

El proposito del aprendizaje es minimizar la discrepancia entre la salida


deseada y la salida de la neurona
III.- PROCEDIMIENTO

3.3. - CODIGO EN MATLAB


3.3.1. - GENERAR EL VOZ.WAP
3.3.2. CODIGO EN MATLAB PARA GENERAR EL DATA_VOZ

clear;close all;clc%limpiamos pantalla


[s,Fs]=audioread('voz.wav');%hacemos lectura del auidio
tiempo = 11;%tiempo de duracion del audio
Fs=16000;%frecuencia del audio
N1=176001;%longitud de x
x=0:1/Fs:tiempo;
x_r=x(1,1:N1);%N1
c_r=s(:,1);
c_r=c_r(1:N1,1);
data=[x_r',c_r];
save data_voz.txt data -ascii -tabs% se guarda con el nombre
data_voz

3.3.3. - GENERAR EL RUIDO.WAP

3.3.4. CODIGO EN MATLAB PARA GENERAR EL DATA_RUIDO

clear;close all;clc%limpiamos pantalla


[y1,Fs]=audioread('ruido.wav');%hacemos lectura del auidio
tiempo=11;%tiempo de duracion del audio
Fs=16000;%frecuencia del audio
x1=0:1/Fs:tiempo;
x_r=x1(1,1:176001);
c_r=y1(:,1);
c_r=c_r(1:176001,1);
data=[x_r',c_r];
save data_ruido.txt data -ascii -tabs% se guarda con el nombre
data_ruido
3.3.5. CODIGO EN MATLAB PARA CANCELAR RUIDO

clear;close all;clc%limpiamos pantalla


%programa cancela ruido
%algoritmo u-LMS red neuronal adaline
load data_ruido.txt %cargamos data_ruido
load data_voz.txt%cargamos data_voz
x1=data_ruido(:,1);%guardamos data_ruido en x1
y1=data_ruido(:,2);%guardamos data_ruido en y1
x2=data_voz(:,1);%guardamos data_voz en x2
y2=data_voz(:,2);%guardamos data_voz en y2

N2=length(y2);
y3=ones(1,N2);
for j=1:N2
y3(1,j)=data_ruido(j,2)+data_voz(j,2);
end
N=length(y1);
y=ones(1,N);
for i=1:N
y(1,i)=data_ruido(i,2);
end
n=2;
X=convmtx(y,n);
X=X(:,1:N);
%algoritmo
w=rand(1,n);
alpha=0.9;%learning rate
e=zeros(1,N);
ep=0;%contador de epocas
emse=1;%condicion de error
tol=0.05;%tolerancia(goal)
pesos=zeros(1,n);
error=zeros(1,N);
Emse=zeros(1,1);

while emse>tol
ep =ep+1;
for k=1:N
y(:,k)=w*X(:,k);
e(:,k)=y3(:,k)-y(:,k);
w=w+2*alpha*e(:,k)*X(:,k)';
end
emse=mse(e);
pesos(ep,:)=w;
error(ep,:)=e;
Emse(ep)=emse;
end
%simulacion
t=0:0.01:(N-1)/100;
%grafica de ruido
subplot(411)
plot(t,y,'k')
title('ruido')
ylim([-2 2])
%grafica de voz
subplot(412)
plot(t,y2,'m')
title('voz')
ylim([-2 2])
%grafica de voz + ruido
subplot(413)
plot(t,y3,'b')
title('voz+ruido')
ylim([-2 2])
%grafica de voz recuperada
subplot(414)
plot(t,e,'r')
title('voz+recuperada')
ylim([-2 2])
%frecuencia de muestreo con la que se obtubo los datos
%p.e => 16000HZ
Fs=16000;%se reconstruye con su Fs
player=audioplayer(e,Fs);
play(player)%reproduce la seal
wavwrite(e,Fs,'voz_recuperada')%guardamos el la
voz_recuperada.wap
IV. RESULTADOS

FIGURA N 3.- Se muestra las etapas desde la voz y ruido hasta mesclando voz + ruido
y obteniendo el resultado final que es voz recuperado.
V.- CONCLUSIONES

El nmero de retrasos o muestras y el coeficiente de aprendizaje son una parte


fundamental para el desarrollo de una red Adaline, ya que estos parmetros
permiten definir su comportamiento. Si estos parmetros no son los adecuados,
se da la posibilidad de que la red no se comporte de acuerdo a los resultados
que se desean obtener, puesto que muy pocos retrasos pueden provocar un mal
filtrado, debido a que la red neuronal no logra adaptarse al comportamiento de
la seal de ruido, adems un coeficiente de aprendizaje demasiado elevado
puede no llevarnos a un mnimo global. De acuerdo a pruebas realizadas en el
filtro implementado, el valor del coeficiente de aprendizaje puede generar dos
respuesta en la red, en el primer caso si se da un valor demasiado grande se
puede presentar el problema de que la red no converja en el mnimo error
requerido. Por otro lado si se da un valor demasiado pequeo se consigue que
la velocidad de respuesta disminuya. Es por estas razones es que el valor del
coeficiente debe ser el adecuado para que la red Adaline converja de manera
adecuada.

VI.- BIBLIOGRAFIA

Martin T. Hagan, Howard B. Demuth, Oklahoma State University, Neural

Network desing, second edition.

Patricio Garca Bez, Introduccin a las Redes Neuronales y su aplicacin

a la Investigacin Astrofsica, Investigacin Astrofsica.

Minaya Villasana, Introduccin a Las redes Neuronales (Neurales) CO-

6612, Introduccin a las Redes Neuronales Artificiales.

Das könnte Ihnen auch gefallen