数字信号处理--实验六IIR滤波器的设计 - 图文 联系客服

发布时间 : 星期三 文章数字信号处理--实验六IIR滤波器的设计 - 图文更新完毕开始阅读be97f0ce571252d380eb6294dd88d0d232d43c73

学生实验报告

开课学院及实验室: 电子楼317 2013 年 05月 13 日

学院 机械与电气年级、专工程学院 业、班 姓名 学号 实验课程名称 数字信号处理实验 成绩 实验项目名称 实验六 IIR滤波器的设计 指导老师

一、实验目的 设计IIR滤波器,实现对存在加性干扰的时域离散信号进行滤波。 二、实验原理 已知带加性干扰的信号x(n)表示,x(n)?xs(n)??(n),式中xs(n)是有用的信号,是一个0~0.2?rad的带限信号。?(n)是一个干扰信号,其频谱分布在0.3?rad以上。要求设计一个巴特沃斯IIR数字滤波器对信号x(n)进行滤波,将干扰?(n)滤除。要求在xs(n)所在的通带内滤波器幅度平坦,在0.2?rad处幅度衰减不大于1dB,在噪声所在的0.3?rad以上的频带内滤波器幅度衰减大于等于40dB。 三、使用仪器、材料 1、硬件:计算机 2、软件:Matlab 四、实验步骤 1. 根据题目要求确定要设计的数字滤波器的技术指标; 2. 将上面的技术指标转换为巴特沃思模拟滤波器的技术指标; 3. 设计该模拟滤波器; 4. 用双线性变换法将设计的模拟滤波器转换为数字滤波器,要求求出该滤波器的系统函数; 5. 画出该滤波器的幅度特性曲线; 6. 根据1所确定的技术指标,调用MATLAB函数buttord和butter,直接设计数字滤波器,观察设计结果与上面用双线性变换的设计结果是否相同。 7. 滤波仿真:调用MATLAB工具箱函数filter对带加性干扰的信号x(n)(此信号由自己生成或由老师提供)进行滤波,观察滤波效果(绘制滤波信号前后的时域和频域波形)。 五、实验过程原始记录(数据、图表、计算等) 本次实验采用的带加性干扰的信号为(64个样值) x(n)=[-0.0289,0.3943,0.9965,1.1266,0.9995,1.0891,1.2262,1.0699,0.8990,0.7685,0.7844,0.9471,1.4317,1.6765,1.7629,-3.2903,3.4122,4.5403,-2.1667,-2.0584,4.6694,2.0368,-0.4864,0.1427,2.5652,-1.8980,-0.0527,-1.4730,2.7884,-6.4092,2.9084,-5.1428,1.5929,0.0014,-0.6010,-4.3059,-0.4518,1.9959,-3.3526,0.5745,-3.5487,0.5913,-0.2472,-1.5479,-2.4422,2.5066,-4.2421,-2.3588,3.8869,-3.9855,0.9583,-1.2164,3.7050,1.2411,-1.7249,0.9964,3.9695,1.3400,-3.5513,5.8552,-2.8092,2.6877,0.4444,3.5641]; ※用双线性变换法设计IIR数字滤波器的程序: %输入64个样值的带加性干扰的信号及其波形 x=[-0.0289,0.3943,0.9965,1.1266,0.9995,1.0891,1.2262,1.0699,0.8990,0.7685,0.7844,0.9471,1.4317,1.6765,1.7629,-3.2903,3.4122,4.5403,-2.1667,-2.0584,4.6694,2.0368,-0.4864,0.1427,2.5652,-1.8980,-0.0527,-1.4730,2.7884,-6.4092,2.9084,-5.1428,1.5929,0.0014,-0.6010,-4.3059,-0.4518,1.9959,-3.3526,0.5745,-3.5487,0.5913,-0.2472,-1.5479,-2.4422,2.5066,-4.2421,-2.3588,3.8869,-3.9855,0.9583,-1.2164,3.7050,1.2411,-1.7249,0.9964,3.9695,1.3400,-3.5513,5.8552,-2.8092,2.6877,0.4444,3.5641]; n=0:63; subplot(3,2,3); stem(n,x,'.'); axis([0 70 -10 10]); hold on; n=0:70; m=zeros(71); plot(n,m,'r'); xlabel('n'); ylabel('x(n)'); title('带加性干扰的信号x(n)'); X=fft(x,256); subplot(3,2,4) k=0:255; plot(2*k/256,abs(X)) axis([0,2,0,60]); xlabel('k'); ylabel('X(k)'); title('带加性干扰的信号采样序列的频谱'); %用双线性变换法设计巴特沃斯滤波器 T=2; %采样间隔为2s wp=0.2*pi;ws=0.3*pi;Rp=1;As=40; Omegap=2*tan(wp/2)/T; %模拟滤波器通带截止频率 Omegas=2*tan(ws/2)/T; %模拟滤波器阻带截止频率 Fs=1/T; %采样频率 [N,wc]=buttord(Omegap,Omegas,Rp,As,'s'); %计算巴特沃斯模拟滤波器阶数N及3dB截止频率Wc [B,A]=butter(N,wc,'s'); [b,a]=bilinear(B,A,Fs); %双线性变换得H(z),Fs为采样频率 %求数字滤波器的幅频特性 [H,w]=freqz(b,a,100); %对应采样间隔为0.02?

mag=abs(H); db=20*log10((mag+eps)/max(mag)); subplot(3,2,1); plot(w/pi,db); axis([0,1,-50,10]); grid on xlabel('\\omega/\\pi'); ylabel('幅度(dB)'); title('双线性变换法设计的滤波器的幅频响应曲线'); %用设计滤波器对输入信号进行滤波 y=filter(b,a,x); subplot(3,2,5); n=0:63; stem(n,y,'.'); axis([0 70 -10 10]); hold on; n=0:70; m=zeros(71); plot(n,m,'r'); xlabel('n'); ylabel('y(n)'); title('滤波后的信号y(n)'); Y=fft(y,256); subplot(3,2,6) k=0:255; plot(2*k/256,abs(Y)) axis([0,2,0,60]); xlabel('k'); ylabel('Y(k)'); title('滤波后的信号采样序列的频谱'); 运行结果: ※ 直接调用函数设计IIR数字滤波器的程序: %直接设计巴特沃斯滤波器 Wp=0.2*pi;Ws=0.3*pi;Rp=1;As=40; wp=Wp/pi;ws=Ws/pi;%求数字滤波器的归一化频率 [N,wc]=buttord(wp,ws,Rp,As); %计算巴特沃斯数字滤波器阶数N及3dB截止频率 [B1,A1]=butter(N,wc) %设计巴特沃斯数字滤波器 %求数字滤波器的幅频特性 [H,w]=freqz(B1,A1,100); %对应采样间隔为0.02? mag=abs(H); db=20*log10((mag+eps)/max(mag)); subplot(3,2,1); plot(w/pi,db); axis([0,1,-50,10]); grid on xlabel('\\omega/\\pi'); ylabel('幅度(dB)'); title('直接调用函数设计的滤波器的幅频响应曲线'); %输入信号及其波形 x=[-0.0289,0.3943,0.9965,1.1266,0.9995,1.0891,1.2262,1.0699,0.8990,0.7685,0.7844,0.9471,1.4317,1.6765,1.7629,-3.2903,3.4122,4.5403,-2.1667,-2.0584,4.6694,2.0368,-0.4864,0.1427,2.5652,-1.8980,-0.0527,-1.4730,2.7884,-6.4092,2.9084

,-5.1428,1.5929,0.0014,-0.6010,-4.3059,-0.4518,1.9959,-3.3526,0.5745,-3.5487,0.5913,-0.2472,-1.5479,-2.4422,2.5066,-4.2421,-2.3588,3.8869,-3.9855,0.9583,-1.2164,3.7050,1.2411,-1.7249,0.9964,3.9695,1.3400,-3.5513,5.8552,-2.8092,2.6877,0.4444,3.5641]; n=0:63; subplot(3,2,3); stem(n,x,'.'); axis([0 70 -10 10]); hold on; n=0:70; m=zeros(71); plot(n,m,'r'); xlabel('n'); ylabel('x(n)'); title('带加性干扰的信号x(n)'); X=fft(x,256); subplot(3,2,4) k=0:255; plot(2*k/256,abs(X)) axis([0,2,0,60]); xlabel('k'); ylabel('X(k)'); title('带加性干扰的信号采样序列的频谱'); %用设计滤波器对输入信号进行滤波 y=filter(B1,A1,x); subplot(3,2,5); n=0:63; stem(n,y,'.'); axis([0 70 -10 10]); hold on; n=0:70; m=zeros(71); plot(n,m,'r'); xlabel('n'); ylabel('y(n)'); title('滤波后的信号y(n)'); Y=fft(y,256); subplot(3,2,6) k=0:255; plot(2*k/256,abs(Y)) axis([0,2,0,60]); xlabel('k'); ylabel('Y(k)'); title('带加性干扰的信号采样序列的频谱'); 运行结果: 六、实验结果及分析 ㈠理论计算用双线性变换法设计巴特沃斯IIR数字滤波器。 ①数字滤波器的主要技术指标为: ?p=0.2?rad,?p=1dB,?s=0.3?rad,?s=40dB ②非线性预畸变校正。 设采样周期为T=2s, ??pp=tan(2)?tan(0.1?)?0.324920rad/s,?p=1dB ?s?tan(?s2)?tan(0.15?)?0.509525rad/s,?s=40dB ③设计过渡模拟滤波器Ha(s)。 波纹幅度参数为 ??10?p/10?1?0.508847,A?10as/20?100 k??p?0.618066,k??1?sA2?1?0.006181

N?lgk1lgk?10.570861,取整数为N=11 ?c??s?1?0.3?A2?1?2N??0.620090 1002?1?122由于没有11阶的系数表数据可参考,所以只计算到阶数N和?c。 ㈡matlab采用双线性变换法设计滤波器 (频率归一化)wc=0.2;ws=0.3 其阶数N及3dB截止频率可通过[N,wc]=buttord(wp,ws,Rp,As)算出,为 阶数N=12,3dB截止频率wc=0.2127。 其系统函数系数B,A可通过[B1,A1]=butter(N,wc)得出,为 B1 = 1.0e-003 * Columns 1 through 8 0.0002 0.0027 0.0146 0.0488 0.1098 0.1757 0.2050 0.1757 Columns 9 through 13 0.1098 0.0488 0.0146 0.0027 0.0002 A1 = Columns 1 through 8 1.0000 -6.8844 22.4341 -45.5100 63.7725 -64.8501 48.9643 -27.6092 Columns 9 through 13 11.5218 -3.4662 0.7128 -0.0899 0.0053 ㈢matlab采用直接设计的方法设计滤波器 模拟滤波器通带、阻带截止频率 ?p?0.3249rad/s,?p?1dB?s?0.5095rad/s,?s?40dB

其阶数N及3dB截止频率可通过[N,wc]=buttord(Omegap,Omegas,Rp,As,'s')算出,为 阶数N=12,3dB截止频率wc=0.3471 其系统函数系数b,a可通过[b,a]=bilinear(B,A,Fs)算出, b = 1.0e-003 * Columns 1 through 8 0.0002 0.0027 0.0146 0.0488 0.1098 0.1757 0.2050 0.1757 Columns 9 through 13 0.1098 0.0488 0.0146 0.0027 0.0002 a = Columns 1 through 8 1.0000 -6.8844 22.4341 -45.5100 63.7725 -64.8501 48.9643 -27.6092 Columns 9 through 13 11.5218 -3.4662 0.7128 -0.0899 0.0053 本实验中我采用的带加性干扰的信号序列(64个样值),通过两种方法设计的滤波器处理后的结果相同,也符合设计要求,能滤除干扰信号。理论算出的巴特沃思滤波器为11阶,而matlab算出的结果为12阶,这是由于matlab的精度和理论计算的差异造成的。