1、实验项目:IIR 数字滤波器设计及软件实现 实验课程:数字信号处理实验时间:2014 年 4 月 22 日 实验地点:理科实验大楼 A222 软件工程实验室 成绩:1.实验目的(1)熟悉用双线性变换法设计 IIR 数字滤波器的原理与方法;(2)学会调用 MATLAB 信号处理工具箱中滤波器设计函数(或滤波器设计分析工具fdatool)设计各种 IIR 数字滤波器,学会根据滤波需求确定滤波器指标参数。(3)掌握 IIR 数字滤波器的 MATLAB 实现方法。(4)通过观察滤波器输入输出信号的时域波形及其频谱,建立数字滤波的概念。2实验报告要求(1)简述实验目的及原理。(2)画出实验主程序框图,打
2、印程序清单。(3)绘制三个分离滤波器的损耗函数曲线。(4)绘制经过滤波分理出的三路调幅信号的时域波形。(5)简要回答思考题。3.实验原理与方法设计 IIR 数字滤波器一般采用间接法(脉冲响应不变法和双线性变换法) ,应用最广泛的是双线性变换法。基本设计过程是:先将给定的数字滤波器的指标转换成过渡模拟滤波器的指标; 设计过渡模拟滤波器;将过渡模拟滤波器系统函数转换成数字滤波器的系统函数。MATLAB 信号处理工具箱中的各种 IIR 数字滤波器设计函数都是采用双线性变换法。第六章介绍的滤波器设计函数 butter、cheby1 、cheby2 和 ellip 可以分别被调用来直接设计巴特沃斯、切比
3、雪夫 1、切比雪夫 2 和椭圆模拟和数字滤波器。本实验要求读者调用如上函数直接设计 IIR 数字滤波器。本实验的数字滤波器的 MATLAB 实现是指调用 MATLAB 信号处理工具箱函数 filter 对给定的输入信号 x(n)进行滤波,得到滤波后的输出信号 y(n) 。4实验内容及步骤(1)调用信号产生函数 mstg 产生由三路抑制载波调幅信号相加构成的复合信号 st,该函数还会自动绘图显示 st 的时域波形和幅频特性曲线,如图 10.4.1 所示。由图可见,三路信号时域混叠无法在时域分离。但频域是分离的,所以可以通过滤波的方法在频域分离,这就是本实验的目的。图 10.4.1 三路调幅信号
4、st 的时域波形和幅频特性曲线(2)要求将 st 中三路调幅信号分离,通过观察 st 的幅频特性曲线,分别确定可以分离 st 中三路抑制载波单频调幅信号的三个滤波器(低通滤波器、带通滤波器、高通滤波器)的通带截止频率和阻带截止频率。要求滤波器的通带最大衰减为 0.1dB,阻带最小衰减为60dB。提示:抑制载波单频调幅信号的数学表示式为 0 001()cos2)s()cos(2)cos(2)ccctftftftft其中, 称为载波,f c为载波频率, 称为单频调制信号,f 0为调制正c弦波信号频率,且满足 。由上式可见,所谓抑制载波单频调幅信号,就是 2 个正弦0f信号相乘,它有 2 个频率成分
5、:和频 和差频 ,这 2 个频率成分关于载波频0cf0cf率 fc对称。所以,1 路抑制载波单频调幅信号的频谱图是关于载波频率 fc对称的 2 根谱线,其中没有载频成分,故取名为抑制载波单频调幅信号。容易看出,图 10.4.1 中三路调幅信号的载波频率分别为 250Hz、500Hz、1000Hz。如果调制信号 m(t)具有带限连续频谱,无直流成分,则 就是一般的抑制载波调幅信号。其频谱图是关于载波频()cos(2)cstmft率 fc对称的 2 个边带(上下边带) ,在专业课通信原理中称为双边带抑制载波 (DSB-SC)调幅信号,简称双边带 (DSB)信号。如果调制信号 m(t)有直流成分,则
6、就是一般的双边带调幅信号。其频谱图是关于载波频率 fc对称的 2()s()cstft个边带(上下边带) ,并包含载频成分。(3)编程序调用 MATLAB 滤波器设计函数 ellipord 和 ellip 分别设计这三个椭圆滤波器,并绘图显示其幅频响应特性曲线。(4)调用滤波器实现函数 filter,用三个滤波器分别对信号产生函数 mstg 产生的信号 st 进行滤波,分离出 st 中的三路不同载波频率的调幅信号 y1(n)、y 2(n)和 y3(n),并绘图显示 y1(n)、y2(n)和 y3(n)的时域波形,观察分离效果。5实验程序及结果: clear all;close all Fs=10
7、000;T=1/Fs; st=mstg; fp=280;fs=450; wp=2*fp/Fs;ws=2*fs/Fs;rp=0.1;rs=60; N,wp=ellipord(wp,ws,rp,rs); B,A=ellip(N,rp,rs,wp); y1t=filter(B,A,st); figure(2);subplot(3,1,1); myplot(B,A); yt=y_1(t); subplot(3,1,2);tplot(y1t,T,yt); = fpl=440;fpu=560;fsl=275;fsu=900; wp=2*fpl/Fs,2*fpu/Fs;ws=2*fsl/Fs,2*fsu/F
8、s;rp=0.1;rs=60; N,wp=ellipord(wp,ws,rp,rs); B,A=ellip(N,rp,rs,wp); y2t=filter(B,A,st); figure(3);subplot(3,1,1); myplot(B,A); yt=y_2(t); subplot(3,1,2);tplot(y2t,T,yt); = fp=890;fs=600; wp=2*fp/Fs;ws=2*fs/Fs;rp=0.1;rs=60; N,wp=ellipord(wp,ws,rp,rs); B,A=ellip(N,rp,rs,wp,high); y3t=filter(B,A,st); fi
9、gure(4);subplot(3,1,1); myplot(B,A); yt=y_3(t); subplot(3,1,2);tplot(y3t,T,yt); % 调用的子函数: (1)myplot:计算时域离散系统损耗函数并绘制曲线图。函数清单如下: function myplot(B,A) H,W=freqz(B,A,1000); m=abs(H); plot(W/pi,20*log10(m/max(m);grid on; xlabel(omega/pi);ylabel(幅度(dB) axis(0,1,-80,5);title(损耗函数曲线); (2)tplot:时域序列连续曲线绘图函数,
10、将采样序列绘图。函数清单如下: function tplot(xn,T,yn) n=0:length(xn)-1;t=n*T; plot(t,xn); xlabel(t/s);ylabel(yn) axis(0,t(end),min(xn),1.2*max(xn);运行结果:6思考题(1)请阅读信号产生函数 mstg,确定三路调幅信号的载波频率和调制信号频率。(2)信号产生函数 mstg 中采样点数 N=800,对 st 进行 N 点 FFT 可以得到 6 根理想谱线。如果取 N=1000,可否得到 6 根理想谱线?为什么?N=2000 呢?请改变函数 mstg 中采样点数 N 的值,观察频谱
11、图验证您的判断是否正确。(3)修改信号产生函数 mstg,给每路调幅信号加入载波成分,产生调幅(AM)信号,重复本实验,观察 AM 信号与抑制载波调幅信号的时域波形及其频谱的差别。提示:AM 信号表示式: 。0()1cos(2)s()cstftft解:(1)三路调幅信号的载波频率分别为250Hz、500Hz、1000Hz,对应的调制信号频率为25Hz、50Hz、100Hz。(2)均能得到 6 根理想谱线。因为信号 st 是周期序列,谱分析时要求观察时间为整数倍周期。分析发现,st 的每个频率成分都是 25Hz 的整数倍。采样频率 Fs=10kHz=25400Hz ,即在 25Hz 的正弦波的 1 个周期中采样 400 点。所以当 N 为 400 的整数倍时一定为st 的整数个周期。因此采样点数 N=800 和 N=2000 时,对 st 进行 N点 FFT 可以得到 6 根理想谱线。(3)增加载波成分后 )(ts 的波形发生变化,且其谱线会增加,谱线的幅值也会发生变化。