程序: clear;
fs=8000;fc=[1200 3000];fr=[1000 3200];rp=1;rs=50; wp=2*fs*tan(2*pi*fc/fs/2); ws=2*fs*tan(2*pi*fr/fs/2);
[N, wn] = cheb1ord(wp, ws, rp, rs, 's'); [b2 a2]=cheby1(N,rp,wp,'s'); [bz2,az2]=bilinear(b2,a2,fs); [h2,w]=freqz(bz2,az2); f=w/(2*pi)*fs;
figure; plot(f,20*log10(abs(h2)),'-b'); grid; xlabel('频率/Hz'); ylabel('幅度'); legend('双线性变换法');
title('切比雪夫带通滤波器');
切比雪夫带通滤波器0双线性变换法-50 -100幅度-150-200-250-300 0500100015002000频率/Hz2500300035004000
系统函数:
H(z)?1.0000-1.3195z?1?4.5855z?2?5.1873z?3?11.4866z?4-11.3175z?5?19.0861z?6?0.0092z?7?0.1368z?8?0.0104z?91?0.8124z?1?2.1656z?2?1.6670z?3?3.6729z?4?2.2977z?5?3.5841z?6?1.8949z?7?2.5650z?8?0.9933z?9阶数N=9
FIR:
求理想通带和阻带的数字边界频率和过渡带宽:
?c1?2??r1?2??1?fc1?0.3?fsfr1?0.25?fs2?0.275??c2?2??r2?2??2?fc2?0.75?fsfr2?0.8?fs2?0.775?
?c1??r1?c2??r2滤波器的过渡带宽为 ?r1??c1?0.05?
阻带衰减不小于50dB,因此选择汉明窗,因此窗口长度为:
6.6??0.05??N?132 N线性相位延迟常数为:
??N-1?65.5 2根据理想边界频率?n和线性相位延迟常数?,求理想单位脉冲响应hd(n):
hd(n)?12??????12ej?(n??)d??12????21ej?(n??)d??sin[(n??)?2]?sin[(n??)?1]
?(n??)窗函数与理想单位脉冲响应相乘,得到线性相位FIR低通滤波器的单位脉冲响应:
????sin??n?65.5?0.275???2?n??sin??n?65.5?0.775hd(n)??0.54?0.46cos??R132?n? ????n?65.5??131???程序:
N=132; n=0:N-1;
a=(N-1)/2; fs=20000; w1=0.275*pi; w2=0.775*pi;
hd=(sin(w2*(n-a))-sin(w1*(n-a)))./(pi*(n-a));
win=0.54-0.46*cos(n*2*pi/(N-1)); %window=hamming(N); h=win.*hd;
figure; stem(n,h);
xlabel('n'); ylabel('h(n)'); grid;
title('线性相位FIR带通滤波器的单位脉冲响应h(n)'); [H,w]=freqz(h,1); H=20*log10(abs(H)); figure; plot(w/(2*pi)*fs, H);
axis([0 0.5*fs -100 10]); xlabel('频率/Hz'); ylabel('幅度/dB'); grid;
title('线性相位FIR带通滤波器,海明窗,N=132'); 结果:
线性相位FIR带通滤波器的单位脉冲响应h(n)0.40.30.20.1h(n)0-0.1-0.2-0.3-0.40204060n80100120140线性相位FIR带通滤波器,海明窗,N=132100-10-20-30幅度/dB-40-50-60-70-80-90-1000100020003000400050006000频率/Hz700080009000100003.
(2)
程序:
[x fs bits]=wavread('F:/姓名学号.wav') figure(1) plot(x)
xlabel('t');ylabel('x(t)') title('语音信号时域图像') X=fft(x) figure(2)
stem(20*log10(abs(X)))
xlabel('频率/Hz');ylabel('幅度/dB'); title('语音信号对数频谱')
结果:
语音信号时域图像10.80.60.40.2x(t)0-0.2-0.4-0.6-0.800.511.5t22.533.5x 104
语音信号对数频谱604020幅度/dB0-20-40-6000.511.52频率/Hz2.533.5x 104
(3)
FIR低通滤波: 程序:
[x fs bits]=wavread('F: /姓名学号/.wav') X=fft(x)
N=132;n=0:N-1; a=(N-1)/2; wn=0.275*pi;
hd=sin(wn*(n-a))./(pi*(n-a)); win=0.54-0.46*cos(n*2*pi/(N-1)); h=win.*hd; y=fftfilt(h,x) Y=fft(y) figure(1) subplot(211)
plot(x);title('原始信号时域') subplot(212)
plot(y);title('低通滤波后时域') figure(2) subplot(211)
stem(20*log10(abs(X))) title('原始信号对数幅频') subplot(212)
stem(20*log10(abs(Y)))