Está en la página 1de 2

clear;clc;

[s Fs]=audioread('audio2.wav');
espectro= abs(fft(s));

%%Diseño del filtro%%


%Condiciones de pasabanda
%Ws1<Wp1<Wp2<Ws2
fs=9500;
fp=[100 4000];
fst=[50 4500];
Wp=fp/(fs/2); %frecuencia de corte normalizada
Ws=fst/(fs/2); %frecuencia de stop normalizada
[n,Wn]=buttord(Wp,Ws,3,60); %retorna el orden minimo y la frecuencia
natural para
%buttord(wp,ws,rp,rs) donde rp es la perdida maxima permisible en la
banda de paso
% rs la minima perdida en la banda de paro
[num,dem]=butter(n,Wn,'bandpass');%retorna los coeficientes de un filtro
butterworth
[h,w]=freqz(num,dem);%Retorna la respuesta en complejos y las frecuencias
normalizada,
% por defecto toma 512 muestras si no es especificado
f=w*fs/pi;
%Señal filtrada
senalf=filter(num,dem,s);
%Espectro
espectrof= abs(fft(senalf));
n1=(0:1/Fs:9.4);
n2=n1(1:(length(espectro)));
figure(1)
subplot(211)
plot (n2,s)
axis([0 9 -0.4 0.4])
title('Grabacion original')
xlim=([0 9.5])
subplot(212)
plot(n2,senalf)
axis([0 9 -0.4 0.4])

title('Grabacion filtrada')
figure(2)
subplot(211)
plot (espectro(1:end/2));
title('Grabacion original')
subplot(212)
plot(espectrof(1:end/2));
title('Grabacion filtrada')
figure(3)
subplot(2,1,1)
plot(f/2,10*log(abs(h)))%Observar ganancia en db
axis([0 4750 -300 100])
xlabel('Hz')
ylabel('Mag (dB)')
grid
subplot(2,1,2)
plot(f/2,angle(h)*180/pi)%Observar angulo en grados
axis([0 4750 -200 200])
xlabel('Hz')
ylabel('Fase (grados)')
grid
figure(4)
plot(f/2,abs(h))
axis([0 4500 0 1.2])

También podría gustarte