IIR数字滤波器设计及软件实现

  • 格式:doc
  • 大小:133.50 KB
  • 文档页数:5

1
《数字信号处理》课程实验报告
实验名称: IIR数字滤波器设计及软件实现 实验日期: 2014/5/28
班 级: 电技11-1 姓 名:学 号:
指导老师:康辉 评 分:
一、实验目的:
(1)、熟悉用双线变换法设计IIR数字滤波器的原理与方法;
(2)、学会调用MATLAB信号处理工具箱中的滤波器设计函数(或滤波器设计分析工具
FDATool)设计各种IIR数字滤波器,学会根据滤波需求确定滤波器指标参数。
(3)、掌握IIR数字滤波器的MATLAB实现方法。
(4)、通过观察滤波器输入、输出信号的时域波形及其频谱,建立数字滤波的概念。

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

图1三路调幅信号st(即s(t))的时域波形和幅频特性曲线
(2)、要求将st中三路调幅信号分离,通过观察st的幅频特性曲线,分别确定可以分离st
中三路抑制载波单频调幅信号的三个滤波器(低通滤波器、带通滤波器、高通滤波器)的通
带截止频率和阻带截止频率。要求滤波器的通带最大衰减为0.1dB,阻带最小衰减为60dB。
提示:抑制载波单频调幅信号的数学表示式为

s(t)=cos(tf02)cos(tfc2)=21[cos(tffc)(20)+cos(tffc)(20)]

其中,cos(tfc2) 称为载波,cf 为载波频率,cos(tf02) 称为单频调制信号,0f 为调
制正弦波信号频率,且满足0ffc 。由上式可见,所谓抑制载波单频调幅信号,就是两个正
弦信号相乘,它有2个频率成分:和频0ffc 、差频0ffc ,这两个频率成分关于载波频
2

率cf 对称。所以,1路抑制载波单频调幅信号的频谱图是关于载波频率cf 对称的两根谱线。
容易看出,图1中三路条幅信号的载波频率分别是250Hz、500Hz、1000Hz。有关调幅(AM)
和抑制载波调幅(SCAM)的一般原理与概念。
(3)、编程序调用MATLAB滤波器设计函数ellipord和ellip分别设计这三个椭圆滤波器,
并绘图显示其损耗函数曲线。
(4)、调用滤波器实现函数filter,用三个滤波器分别对信号产生函数mgst产生的信号st

进行滤波,分离出st中三路不同载波频率的调幅信号)(1ny、)(2ny和)(3ny,并绘图显示)(1ny、

)(2ny
和)(3ny的时域波形,观察分离效果。
三、程序及其运行结果:
(1)、信号产生函数mstg程序
function st=mstg
N=1800
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/8,min(st),max(st)]);title('(a) s(t)的波形')
subplot(2,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('幅度')

运行程序,产生如图1波形;
(2)、设计低通滤波器,得到信号的波形程序如下:
clear all;
Fs=10000;
T=1/Fs;
st=text4;
fp=280;
fs=450;
wp=2*fp/Fs;
3

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(2,1,1)
wk=linspace(0,pi,256);
Hk=freqz(B,A,wk);
plot(wk/pi,20*log10(Hk));
xlabel('\omega/\pi');
ylabel('dB');
axis([0,1.1,-90,2])
subplot(2,1,2);
plot(y1t);
xlabel('t/s');
ylabel('y1(t)');

运行程序,得到如下图形:

图2 信号波形及低通滤波器波特图
(3)、设计带通滤波器,得到信号的波形程序如下:
clear all;
Fs=10000;
T=1/Fs;
st=text4;
fpl=440;fpu=560;
fsl=275;fsu=900;
wp=[2*fpl/Fs,2*fpu/Fs];
ws=[2*fsl/Fs,2*fsu/Fs];
rp=0.1;rs=60;
[N,wp]=ellipord(wp,ws,rp,rs);
4

[B,A]=ellip(N,rp,rs,wp);
y1t=filter(B,A,st);
figure(2);
subplot(2,1,1)
wk=linspace(0,pi,256);
Hk=freqz(B,A,wk);
plot(wk/pi,20*log10(Hk));
xlabel('\omega/\pi');
ylabel('dB');
axis([0,1.1,-90,2])
subplot(2,1,2);
plot(y1t);
xlabel('t/s');
ylabel('y1(t)');

运行程序,得到如下图形:

图3信号波形及带通滤波器波特图
(4)、设计高通滤波器,得到信号的波形程序如下:
clear all;
Fs=10000;
T=1/Fs;
st=text4;
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');
y1t =filter(B,A,st);
figure(4);
5

subplot(2,1,1)
wk =linspace(0,pi,256);
Hk=freqz(B,A,wk);
plot(wk/pi,20*log10(Hk));
xlabel('\omesa/\pi ');
ylabel('db');
axis([0,1.1,-90,2])
subplot(2,1,2);
plot(y1t);
xlabel('t/s');
ylabel('y(t)');

运行程序,得到如下图形:

图4 信号波形及带通滤波器波特图
四、思考题:
(1)请阅读信号产生函数mstg,确定三路调幅信号的载波频率和调制信号频率。

答:三路调幅信号的载波频率分别为250Hz、500Hz、1000Hz.
调制信号频率分别为100Hz、50Hz、25Hz

(2)信号产生函数mstg中采样点数N=800,对st进行N点FFT可以得到6根理想谱线。如
果取N=1000,可否得到6根理想谱线?为什么?N=2000呢?请改变函数mstg中采样点数N
的值,观察频谱图验证您的判断是否正确。

答:分析发现,st的每个频率成分都是25Hz的整数倍。采样频率Fs=10kHz=25×400Hz,即
在25Hz的正弦波的1个周期中采样400点。所以,当N为400的整数倍时一定为st的整数
个周期。因此,采样点数N=800和N=2000时,对st进行N点FFT可以得到6根理想谱线。
如果取N=1000,不是400的整数倍,不能得到6根理想谱线。