You are on page 1of 10

SEALES Y FILTROS DIGITALES

I. ACTIVIDADES

1. Crear y guardar un archivo de audio.wav de al menos 30 seg de duracin y frecuencia
de muestreo arriba de 11KHz

>> fs=20000;
>> y=wavrecord(30*fs,fs);
>> wavwrite(y,fs,'dsp5.wav');

2. Abra el archivo y crguelo en un vector y, almacene tambin fs
>>[y fs]=wavread(S); %y vector donde se carga el sonido; fs frecuencia de muestreo

>> [y Fs]=wavread('dsp5.wav');
>> sound(y,Fs)

3. Determinar el nmero de muestras N usando el comando length

> N=length(y)

N =

600000

4. Definir la mitad del nmero de muestras
>>fl=round(N/2)

>> fl=round(N/2)

fl =

300000

5. Graficar la seal en el tiempo y el espectro en frecuencias

>>subplot(2,1,1); %Grafica de Sonido en el tiempo.
>>plot(y,'r');axis([1000,5000,-1,1]);xlabel('Tiempo');ylabel('Amplitud');title('Seal en el
tiempo');
>>espectro=abs(fftshift(fft(y)));
>>[menor pri]=sort(espectro); %Ordena el espectro de menor a mayor
>>if 2*fl==N %Detector de Frecuencias medias de sonido
fd1=-fl;
fd2=fl-1;
else 2*fl>n
fd1=1-fl;
fd2=fl-1;
end
>>subplot(2,1,2); %Grafica de espectro de seal
>>
plot(fd1:1:fd2,espectro);axis([0,5000,0,menor(n)]);xlabel('Frecuencia');ylabel('Amplitud');
title('Seal en Frecuencia');
>>sound(y,fs);

>> subplot(2,1,1); %Grafica de Sonido en el tiempo.
>> plot(y,'r');xlabel('Tiempo');ylabel('Amplitud');title('Seal en el tiempo');
>> espectro=abs(fftshift(fft(y)));
>> [menor pri]=sort(espectro); %Ordena el espectro de menor a mayor
>> if 2*fl==N
fd1=-fl;
fd2=fl-1;
else 2*fl>N
fd1=1-fl;
fd2=fl-1;
end
>> subplot(2,1,2); %Grafica de espectro de seal
>>plot(fd1:1:fd2,espectro);xlabel('Frecuencia');ylabel('Amplitud');title('Seal en
Frecuencia');
>> sound(y,Fs);


6. Generar el efecto de reverberacin
>>a=0.5; %Magnitud de la reverberacion
>>R=5000; %Numero de muestras para el efecto
>>x=zeros(size(y));
>>for i=1:1:R+1
x(i) =y(i); %vector de efecto
end
>>for i=R+1:1:n
x(i)=y(i)+a*y(i-R); %sonido mas efecto
end;
>>sound(x,fs);
>>end

>> a=0.5; %Magnitud de la reverberacion
>> R=5000; %Numero de muestras para el efecto
>> x=zeros(size(y));
>> for i=1:1:R+1
x(i) = y(i); %vector de efecto
end
>> for i=R+1:1:N
x(i)= y(i)+ a*y(i-R); %sonido mas efecto
end;
>> sound(x,Fs);

7. Repita el paso 6 con al menos dos valores diferentes de a y R, consigne en cada caso
los espectros en frecuencia, compare con el de la seal original, comente los
resultados obtenidos

>> a=2;
>> R=10000;
>> x=zeros(size(y));
>> for i=1:1:R+1
x(i) = y(i);
end
>> for i=R+1:1:N
x(i)= y(i)+ a*y(i-R);
end
>> sound(x,Fs);
>> espectro=abs(fftshift(fft(x)));
>> [menor pri]=sort(espectro);
>> if 2*fl==N
fd1=-fl;
fd2=fl-1;
else 2*fl>N
fd1=1-fl;
end
>> plot(fd1:1:fd2,espectro);xlabel('Frecuencia');ylabel('Amplitud');title('Seal en
Frecuencia');




>> a=0.1;
>> R=1000;
>> x=zeros(size(y));
>> for i=1:1:R+1
x(i) = y(i);
end
>> for i=R+1:1:N
x(i)= y(i)+ a*y(i-R);
end
>> sound(x,fs);
>> espectro=abs(fftshift(fft(x)));
>> [menor pri]=sort(espectro);
>> if 2*fl==N
fd1=-fl;
fd2=fl-1;
else 2*fl>N
fd1=1-fl;
fd2=fl-1;
end
>> plot(fd1:1:fd2,espectro);xlabel('Frecuencia');ylabel('Amplitud');title('Seal en
Frecuencia');


8. Aplique un filtro pasabajos de orden 30 con frecuencia de corte 0.20 (1/5 de Fs) y
ganancia 0.4
>>Wn =.20; %Frecuencia de Corte. 0 N =30; %Grado del filtro
>>LP =fir1(N,Wn); %filtro pasa bajos
>>gLP =0.4
>>y1 =conv(LP,y); %convolucion seal y filtro
>>fre=round(length(y1)/2);
>>if 2*fre==length(y1)%Detector de Frecuencias medias de sonido
fd3=-fre;
fd4=fre-1;
else 2*fre>length(y1)
fd3=1-fre;
fd4=fre-1;
end
>>yC=gLP * y1; %Seal por filtro pasa baja
>>espectrobajos=abs(fftshift(fft(yC)));%frecuencias
>>sound(yC,fs)

>> Wn = .20; %Frecuencia de Corte. 0 N = 30; %Grado del filtro
>> LP = fir1(N,Wn); %filtro pasa bajos
>> gLP = 0.4
>> y1 = conv(LP,y) %convolucion seal y filtro
>> fre=round(length(y1)/2);
>> if 2*fre==length(y1)%Detector de Frecuencias medias de sonido
fd3=-fre;
fd4=fre-1;
else 2*fre>length(y1)
fd3=1-fre;
fd4=fre-1;
end
>> yC= gLP * y1; %Seal por filtro pasa baja
>> espectrobajos=abs(fftshift(fft(yC)));%frecuencias
>> sound(yC,Fs)



9. Aplique un filtro pasabanda de orden 30 con frecuencias de corte 0.20 y 0.5 y
ganancia 1.5
>>Wn1 =[.20, .50]; %Frecuencias de corte
>>BP =fir1(N,Wn1); %Filtro Pasa bandas
>>gBP =1.5;
>>y2 =conv(BP,y); %convolucion seal y filtro
>>yB=gBP * y2; %Seal por filtro pasa banda
>>espectrobanda=abs(fftshift(fft(yB)));%frecuencias
>>sound(yB,fs)

>> Wn1 = [.20, .50]; %Frecuencias de corte
>> BP = fir1(N,Wn1); %Filtro Pasa bandas
>> gBP = 1.5;
>> y2=conv(BP,y); %convolucion seal y filtro
>> yB= gBP * y2; %Seal por filtro pasa banda
>> espectrobanda=abs(fftshift(fft(yB)));%frecuencias
>> sound(yB,Fs)

10. Aplique un filtro pasaaltos de orden 30 con frecuencias de corte 0.5 y ganancia 1.5
>>Wn2 =.50; %Frecuencia de corte
>>HP =fir1(N,Wn2,'high');%filtro pasa altas
>>gHP =1.5;
>>y3 =conv(HP,y); %convolucion seal y filtro
>>yA=gHP * y3; %Seal por filtro pasa altas
>>espectroaltas=abs(fftshift(fft(yA)));%frecuencias
>>sound(yA,fs)

>> Wn2 = .50; %Frecuencia de corte
>> HP = fir1(N,Wn2,'high');%filtro pasa altas
>> gHP = 1.5;
>> y3 = conv(HP,y); %convolucion seal y filtro
>> yA= gHP * y3; %Seal por filtro pasa altas
>> espectroaltas=abs(fftshift(fft(yA)));%frecuencias
>> sound(yA,Fs)

11. Recupere la seal original a partir de las seales filtradas
>>yD =yA +yB +yC; %Suma de seales filtradas
>>espectrotodo=abs(fftshift(fft(yD)));
>>sound(yD,fs)

>> yD = yA + yB + yC; %Suma de seales filtradas
>> espectrotodo=abs(fftshift(fft(yD)));
>> sound(yD,Fs)

12. Muestre los espectros en frecuencia de los filtros aplicados y de la seal original
>>subplot(4,1,1)
>> plot(fd3:fd4,espectroaltas);xlabel('Frecuencia');ylabel('Amplitud');title('Seal en
Frecuencia Pasa Altas');
>>subplot(4,1,2)
>> plot(fd3:fd4,espectrobanda,'r');xlabel('Frecuencia');ylabel('Amplitud');title('Seal en
Frecuencia Pasa Banda');
>>subplot(4,1,3)
>> plot(fd3:fd4,espectrobajos,'k');xlabel('Frecuencia');ylabel('Amplitud');title('Seal en
Frecuencia Pasa Bajos');
>>subplot(4,1,4)
>> plot(fd3:fd4,espectrotodo);xlabel('Frecuencia');ylabel('Amplitud');title('Seal en
Frecuencia Completa');

>> subplot(4,1,1)
>> plot(fd3:fd4,espectroaltas);xlabel('Frecuencia');ylabel('Amplitud');title('Seal en Frecuencia
Pasa Altas');
>> subplot(4,1,2)
>> plot(fd3:fd4,espectrobanda,'r');xlabel('Frecuencia');ylabel('Amplitud');title('Seal en
Frecuencia Pasa Banda');
>> subplot(4,1,3)
>> plot(fd3:fd4,espectrobajos,'k');xlabel('Frecuencia');ylabel('Amplitud');title('Seal en
Frecuencia Pasa Bajos');
>> subplot(4,1,4)
>> plot(fd3:fd4,espectrotodo);xlabel('Frecuencia');ylabel('Amplitud');title('Seal en Frecuencia
Completa');



13. Adicione ruido blanco gaussiano a la seal original y reprodzcala nuevamente
% y el vector de seal, N el nmero de muestras, P potencia del ruido
>>b=rand(N,1);
>>fi=2*pi*rand(N,1)
>>r=sqrt(-2*P*log(1-b)
>>ruido=r*cos(fi)
>>yruido=y+ruido

>> b=rand(N,1);
>> fi=2*pi*rand(N,1);
>> r=sqrt(-2*log(1-b));
>> ruido=r.*cos(fi);
>> yruido=y+ruido;
>> sound(yruido,Fs)

14. Grafique la seal original y la seal con ruido en el tiempo, comente

>> subplot(2,1,1)
>> plot(y)
>> subplot(2,1,2)
>> plot(yruido)



Se observa en la seal original los cambios de amplitud con respecto al tiempo son mas claros,
ya que la seal esta limpia, sin ruido.
Mientras que en la segunda imagen se observa que los cambios de amplitud con respecto al
tiempo no son muy claros, aparenta ser una sola seal sin cambios en el tiempo, esto se debe
al ruido, la seal no es muy clara.

15. Grafique el espectro en frecuencia de la seal original y la seal con ruido, comente

>> espectro=abs(fftshift(fft(y)));
>> [menor pri]=sort(espectro); %Ordena el espectro de menor a mayor
>> subplot(2,1,1); %Grafica de espectro de seal
>> plot(espectro);xlabel('Frecuencia');ylabel('Amplitud');title('Seal en Frecuencia');
>> espectroruido=abs(fftshift(fft(yruido)));
>> [menor pri]=sort(espectroruido);
>> subplot(2,1,2);
>> plot(espectroruido);xlabel('Frecuencia');ylabel('Amplitud');title('Seal en
Frecuencia');


Se observa que si bien ambas imgenes aparentan ser iguales, no es as, ya que la
primera imagen se ve mas limpia, la informacin es mas clara, mientras que en la
segunda imagen la informacin no es muy clara, esta con ruido.

You might also like