实验四音频抗混叠滤波器设计[实验目的]学习用Matlab进行滤波器设计仿真。
[实验内容]题目要求:1)设计Butterworth型音频抗混叠滤波器;2)参数:下通带频率300Hz;上通带频率3400Hz;下阻带频率280Hz;上阻带频率3600Hz;通带最大衰减0.3dB;阻带最小衰减40dB;3)采用一低通滤波器和一高通滤波器级联;4)分别确定LPF和HPF的性能指标;5)求出两滤波器的系统函数和频率响应,并画出其幅频特性曲线;6)求整个滤波器的系统函数和频率响应,并画出其幅频特性曲线。
编程原理:Matlab 基础,buttord(),butter(),freqs()等函数的调用。
程序脚本,带注释%LPF的设计如下:Wp1=2*pi*3200;Ws1=2*pi*3600;Ap=0.3;As=40;[N1,Wc1]=buttord(Wp1,Ws1,Ap,As,'s');fprintf('Order of the LPF=%.0f\n',N);[num1,den1]=butter(N1,Wc1,'s');disp('Numerator polynomial 1');fprintf('%.4e\n',num1);disp('Denominator polynomial 1');fprintf('%.4e\n',den1);omega=[Wp1 Ws1]; h=freqs(num1,den1,omega); fprintf('Ap1=%.4f\n',-20*log10(abs(h(1)))); fprintf('As1=%.4f\n',-20*log10(abs(h(2)))); omega=[0:200:12000*pi];h1=freqs(num1,den1,omega);gain1=20*log10(abs(h1));subplot(2,2,1)plot(omega/(2*pi),gain1);xlabel('Frequency in Hz');ylabel('Gain1 in dB');%HPF的设计如下:Wp2=2*pi*340; Ws2=2*pi*280; Ap=0.3; As=40; [N2,Wc2]=buttord(Wp2,Ws2,Ap,As,'s');fprintf('Order of the HPF=%.0f\n',N2);[num2,den2]=butter(N2,Wc2,'high','s');disp('Numerator polynomial 2');fprintf('%.4e\n',num2);disp('Denomianator polynomial 2');fprintf('%.4e\n',den2);omega=[Wp2 Ws2];h2=freqs(num2,den2,omega);fprintf('Ap2=%.4f\n',-20*log10(abs(h2(1)))); fprintf('As2=%.4f\n',-20*log10(abs(h2(2)))); omega=[0:200:12000*pi];h2=freqs(num2,den2,omega);gain2=20*log10(abs(h2));subplot(2,2,2)plot(omega/(2*pi),gain2);xlabel('Frequency in Hz');ylabel('Gain 2 in dB');%LPF与HPF的级联如下:h=h1.*h2;gain=20*log10(abs(h));subplot(2,2,3)plot(omega/(2*pi),gain);xlabel('Frequency in Hz');ylabel('Gain in dB'); 仿真结果、图形:Order of the LPF=33Numerator polynomial 10.0000e+0000.0000e+0000.0000e+0000.0000e+000 0.0000e+000 0.0000e+000 0.0000e+000 0.0000e+000 0.0000e+000 0.0000e+000 0.0000e+000 0.0000e+000 0.0000e+000 0.0000e+000 0.0000e+000 0.0000e+000 0.0000e+000 0.0000e+000 0.0000e+000 0.0000e+000 0.0000e+000 0.0000e+000 0.0000e+000 0.0000e+0000.0000e+000 0.0000e+000 0.0000e+000 0.0000e+000 0.0000e+000 0.0000e+000 0.0000e+000 0.0000e+000 0.0000e+000 0.0000e+000 0.0000e+000 0.0000e+000 0.0000e+000 0.0000e+000 0.0000e+000 0.0000e+000 0.0000e+000 0.0000e+000 0.0000e+000 0.0000e+000 0.0000e+0000.0000e+0000.0000e+0000.0000e+0001.1985e+220 Denominator polynomial 1 1.0000e+0006.7110e+0052.2519e+0115.0342e+0168.4301e+0211.1272e+0271.2527e+0321.1896e+0379.8458e+0417.2108e+0464.7281e+0512.8017e+0561.5117e+0617.4739e+0653.4033e+0701.4335e+0752.0412e+084 6.9398e+088 2.2076e+093 6.5824e+097 1.8424e+102 4.8468e+1061.1994e+1112.7942e+115 6.1303e+1191.2669e+1242.4664e+128 4.5219e+132 7.8042e+136 1.2671e+1411.9334e+1452.7694e+1493.7184e+1534.6712e+1575.4788e+1615.9841e+1656.0679e+1694.9168e+1773.8919e+1812.8052e+1851.8273e+1891.0656e+1935.4989e+1962.4733e+2009.5048e+2033.0361e+2077.7438e+2101.4794e+2141.8831e+2171.1985e+220Ap1=0.2552As1=39.9998Order of the HPF=31 Numerator polynomial 2 1.0000e+0000.0000e+0000.0000e+0000.0000e+0000.0000e+000 0.0000e+000 0.0000e+000 0.0000e+000 0.0000e+000 0.0000e+000 0.0000e+000 0.0000e+000 0.0000e+000 0.0000e+000 0.0000e+000 0.0000e+000 0.0000e+000 0.0000e+000 0.0000e+000 0.0000e+000 0.0000e+000 0.0000e+000 0.0000e+000 0.0000e+000 0.0000e+0000.0000e+0000.0000e+0000.0000e+0000.0000e+0000.0000e+000 Denomianator polynomial 2 1.0000e+0004.0298e+0048.1196e+0081.0888e+0131.0912e+0178.7040e+0205.7449e+0243.2214e+0281.5635e+0326.6589e+0352.5143e+0398.4827e+0422.5720e+0467.0391e+0491.7442e+0533.9206e+0568.0021e+0591.4830e+0632.4934e+0663.7953e+0695.2145e+0726.4389e+0757.1038e+0786.9485e+0815.9641e+0844.4310e+0872.7967e+0901.4607e+0936.0713e+0951.8861e+0983.8997e+1004.0314e+102Ap2=0.2496As2=40.0000Warning: Log of zero.> In C:\MATLAB6p5\toolbox\matlab\elfun\log10.m at line 17 In C:\MATLAB6p5\work\hbpf.m at line 34Warning: Log of zero.> In C:\MATLAB6p5\toolbox\matlab\elfun\log10.m at line 17In C:\MATLAB6p5\work\hbpf.m at line 40结果分析和结论:实验证明,当通带和阻带截频太近时,滤波器物理上很难实现。
所以把上通带和下通带截止频率分别调换成3000Hz和340Hz。
结论:理想滤波器物理不可实现。
遇到的问题和解决方法:问题:参数不合适,出不来波形;不会级联。
解决方法:自主思考;翻阅图书;同学讨论;询问老师。