数字滤波器设计与仿真实验

  • 格式:docx
  • 大小:398.38 KB
  • 文档页数:4

电子系电子信息工程实验报告

课程名称:《基于MATLAB的信号与系统及数字信号处理仿真实验》

实验项目名称:数字滤波器设计与仿真实验

实验时间:2012-6-20实验地点:信息学院四层机房

一、实验目的

1、 熟悉用数字滤波器设计的原理与方法;

2、 学会调用MATLAB信号处理工具箱中滤波器设计函数(或滤波器设计分析工具FDATOOL)设计各种类型数字滤波器,学会根据滤波需求确定滤波器指标参数。

3、 掌握数字滤波器的MATLAB实现方法。

4、 通过观察滤波器输入输出信号的时域波形及其频谱,建立数字滤波的概念。

二、实验原理

1、 IIR数字滤波器设计原理

设计IIR数字滤波器一般采用间接法(脉冲响应不变法和双线性变换法),应用最广泛的是双线性变换法。基本设计过程是:①先将给定的数字滤波器的指标转换成过渡模拟滤波器的指标;②设计过渡模拟滤波器;③将过渡模拟滤波器系统函数转换成数字滤波器的系统函数。MATLAB信号处理工具箱中的各种IIR数字滤波器设计函数都是采用双线性变换法。第六章介绍的滤波器设计函数butter、cheby1 、cheby2 和ellip可以分别被调用来直接设计巴特沃斯、切比雪夫1、切比雪夫2和椭圆模拟和数字滤波器。本实验要求调用如上函数直接设计IIR数字滤波器。

2、 FIR数字滤波器设计原理

设计FIR数字滤波器一般采用直接法(窗函数法、频率采样法和等波纹最佳逼近法),本实验采用的是窗函数法。基本设计过程是:①先根据给定的数字滤波器的指标选择合适的窗函数并计算窗口宽度N;②调用MATLAB函数fir1/fir2设计一个FIR滤波器;③调用MATLAB快速卷积函数fftfilt实现对输入信号的滤波。MATLAB信号处理工具箱中的fir2函数是实现窗函数法和频率采样法的一个综合函数,remezord和remez函数可以实现FIR数字滤波器。本实验要求调用如上函数设计FIR数字滤波器。

三、实验内容

1、 调用信号产生函数mstg产生由三路抑制载波调幅信号相加构成的复合信号st,该函数还会自动绘图显示st的时域波形和幅频特性曲线,如图5.1所示。由图可见,三路信号时域混叠无法在时域分离。但频域是分离的,所以可以通过滤波的方法在频域分离,这就是本实验的目的。

图5.1 三路调幅信号st的时域波形和幅频特性曲线

程序:

functionst=mstg;

N=1600;

Fs=10000;T=1/Fs;Tp=N*T;

t=0:T:(N-1)*T;k=0:N-1;f=k/Tp;

fc1=Fs/10;

fm1=fc1/10;

fc2=Fs/20;

fm2=fc2/10;

fc3=Fs/40;

fm3=fc3/10;

xt1=cos(2*pi*fm1*t).*cos(2*pi*fc1*t);

xt2=cos(2*pi*fm2*t).*cos(2*pi*fc2*t);

xt3=cos(2*pi*fm3*t).*cos(2*pi*fc3*t);

st=xt1+xt2+xt3;

fxt=fft(st,N);

subplot(3,1,1);

plot(t,st);grid;xlabel('t/s');ylabel('s(t)');

axis([0,Tp/2,min(st),max(st)]);title('(a)s(t)的波形')

subplot(3,1,2);

stem(f,abs(fxt)/max(abs(fxt)),'.');grid;title('(b)s(t)的频谱');

axis([0,Fs/5,0,1.2]);

xlabel('f/Hz');ylabel('幅度');

2、 要求将st中三路调幅信号分离,通过观察st的幅频特性曲线,分别确定可以分离st中三路抑制载波单频调幅信号的三个滤波器(低通滤波器、带通滤波器、高通滤波器)的通带截止频率和阻带截止频率。要求滤波器的通带最大衰减为0.1dB,阻带最小衰减为60dB。

程序:

subplot(323);plot(fk1/1000,20*log10(abs(Hk1)));grid;

subplot(324);plot(t,x2);grid;

%IIR的双线性变换法设计高通滤波器

wp2=2*pi*890;ws2=2*pi*500;

[N2,wc2]=buttord(wp2,ws2,ap,as,'s');

[B2,A2]=butter(N2,wc2,'high','s');

[Bz2,Az2]=bilinear(B2,A2,Fs);

Hk2=freqs(B2,A2,wk1);

x3=filter(Bz2,Az2,st);

subplot(325);plot(fk1/1000,20*log10(abs(Hk2)));grid;

subplot(326);plot(t,x3);grid;

%带通滤波器

wp=2*pi*300;ws=2*pi*450;ap=0.1;as=60;

[N0,wc]=buttord(wp,ws,ap,as,'s');

[B,A]=butter(N0,wc,'s');

fk=0:1000;wk=2*pi*fk;

[Bz,Az]=bilinear(B,A,Fs);

Hk=freqs(B,A,wk);

x1=filter(Bz,Az,st);

figure;subplot(321);plot(fk1/1000,20*log10(abs(Hk)));grid; subplot(322);plot(t,x1);grid;

%低通滤波器

wp=2*pi*300;ws=2*pi*450;ap=0.1;as=60;

[N0,wc]=buttord(wp,ws,ap,as,'s');

[B,A]=butter(N0,wc,'s');

fk=0:1000;wk=2*pi*fk;

[Bz,Az]=bilinear(B,A,Fs);

Hk=freqs(B,A,wk);

x1=filter(Bz,Az,st);

figure;subplot(321);plot(fk1/1000,20*log10(abs(Hk)));grid; subplot(322);plot(t,x1);grid;

3、 编程序要求采用IIR的双线性变换法和FIR的窗函数法两类滤波器设计方法分别设计低通、带通和高通三个滤波器,并绘图显示其幅频响应特性曲线。

4、 利用所设计的滤波器对信号产生函数mstg产生的信号st进行滤波处理,分离出st中的三路不同载波频率的调幅信号y1(n)、y2(n)和y3(n),并绘图显示y1(n)、y2(n)和y3(n)的时域波形,观察分离效果。

四、参考资料

《信号与系统》、《数字信号处理》、《实验教学指导手册》

五、实验心得

MATLAB信号处理工具箱中的各种IIR数字滤波器设计函数都是采用双线性变换法我们可以利用这些工具箱函数来实现IIR数字滤波器的设计,还可以调用MATLAB信号处理工具箱中的fir2函数来实现设计FIR数字滤波器。