N1=ceil(6.4*2*pi/wdel);
N=N1+mod(N1+1,2); %---确保N为奇数 ws =[(wp1+wc1)/2/pi,(wp2+wc2)/2/pi]; wn= kaiser(N+1,beta); b=fir1(N,ws,wn); figure(1); freqz(b,1)
x=fftfilt(b,z1); X=fft(x,8192); f=fs*(0:4095)/8192; figure(2);
f=fs*(0:4095)/8192; subplot(3,2,1);
plot(f,abs(Y1(1:4096))); axis([0 4000 0 10]); xlabel('频率'); ylabel('振幅');
title('滤波前信号频谱');
subplot(3,2,2);plot(f,abs(X(1:4096))); axis([0 4000 0 10]); xlabel('频率'); ylabel('振幅');
title('滤波后信号频谱'); subplot(3,2,3); plot(angle(Y1)); title('滤波前相位谱'); subplot(3,2,4); plot(angle(X));
title('滤波后相位谱'); subplot(3,2,5); plot(z1);
title('滤波前信号波形'); subplot(3,2,6);plot(x); title('滤波后信号波形'); sound(x,fs,bits);
wavwrite(x,fs,'d:/shengyin8.wav');
100Magnitude (dB)0-100-20000.10.20.30.40.50.60.70.8Normalized Frequency (?? rad/sample)0.915000Phase (degrees)0-5000-10000-1500000.10.20.30.40.50.60.70.8Normalized Frequency (?? rad/sample)0.91
滤波前信号频谱1010滤波后信号频谱振幅50振幅0100020003000频率滤波前相位谱4000500100020003000频率滤波后相位谱400050-50.10-0.150-50.10-0.105000滤波前信号波形1000005000滤波后信号波形1000000.511.5x 102400.511.5x 1024
双线性变换法设计IIR低通滤波器 ①选用butter 程序设计如下:
clear;close all
[z1,fs,bits]=wavread('d:/shengyin3') Y1=fft(z1,8192);
fp=1000;fc=1200;As=100;Ap=1;Fs=7000; wc=2*fc/Fs; wp=2*fp/Fs; [N,ws]=buttord(wc,wp,Ap,As); [b,a]=butter(N,ws); figure(1);
[h,w]=freqz(b,a);
plot(w/pi,abs(h));grid; xlabel('\\omega/\pi'); ylabel('振幅(幅值)');
title('Butterworth型数字低通滤波器的幅频响应'); x=filter(b,a,z1); X=fft(x,8192); figure(2);
f=fs*(0:4095)/8192; subplot(3,2,1);
plot(f,abs(Y1(1:4096))); axis([0 4000 0 10]); xlabel('频率'); ylabel('振幅');
title('滤波前信号频谱');
subplot(3,2,2);plot(f,abs(X(1:4096))); axis([0 4000 0 10]); xlabel('频率'); ylabel('振幅');
title('滤波后信号频谱'); subplot(3,2,3); plot(angle(Y1)); title('滤波前相位谱'); subplot(3,2,4); plot(angle(X));
title('滤波后相位谱'); subplot(3,2,5); plot(z1);
title('滤波前信号波形'); subplot(3,2,6);plot(x); title('滤波后信号波形'); sound(x,fs,bits);
wavwrite(x,fs,'d:/shengyin6.wav');图形分析
滤波前信号频谱1010滤波后信号频谱振幅50振幅0100020003000频率滤波前相位谱4000500100020003000频率滤波后相位谱400050-50.10-0.150-50.10-0.105000滤波前信号波形1000005000滤波后信号波形1000000.511.5x 102400.511.5x 1024
(5)双线性变换法设计高通滤波器
②选用cheby1 程序设计如下:
[z1,fs,bits]=wavread('d:/shengyin3') Y1=fft(z1,8192);
fp=3000;fc=2800;As=100;Ap=1;Fs=7000; wc=2*fc/Fs; wp=2*fp/Fs;
[N,ws]=cheb1ord(wc,wp,Ap,As);
[b,a]=cheby1(N,Ap,wp,'high'); figure(1);
[h,w]=freqz(b,a);
plot(w/pi,abs(h));grid; xlabel('\omega/\\pi'); ylabel('振幅(幅值)');
title('切比雪夫型数字高通滤波器的幅频响应'); x=filter(b,a,z1); X=fft(x,8192);
f=fs*(0:4095)/8192; figure(2);
f=fs*(0:4095)/8192; subplot(3,2,1);
plot(f,abs(Y1(1:4096))); axis([0 4000 0 10]); xlabel('频率'); ylabel('振幅');
title('滤波前信号频谱');
subplot(3,2,2);plot(f,abs(X(1:4096))); axis([0 4000 0 10]); xlabel('频率'); ylabel('振幅');
title('滤波后信号频谱'); subplot(3,2,3); plot(angle(Y1));
title('滤波前相位谱'); subplot(3,2,4); plot(angle(X));
title('滤波后相位谱'); subplot(3,2,5); plot(z1);
title('滤波前信号波形'); subplot(3,2,6);plot(x); title('滤波后信号波形'); sound(x,fs,bits);
wavwrite(x,fs,'d:/sn7.wav'
hengy
i
);