数字信号处理实验二IIR数字滤波器设计及软件实现

文末获取完整实验报告(包括源码+思考题)


一、实验目的
1.熟悉用双线性变换法设计IIR数字滤波器的原理和方法。
2.学会调用MATLAB信号处理工具箱中滤波器设计函数(或滤波器设计分析工具FDATool)设计各种IIR数字滤波器,学会根据滤波需求确定滤波器指标参数。
3.掌握IIR数字滤波器的MATLAB实现方法。
4.通过观察滤波器输入、输出信号的时域波形及其频谱,建立数字滤波的概念。

二、实验内容及步骤
1.调用信号产生函数mstg产生由三路抑制载波调幅信号相加构成的复合信号st,该函数还会自动绘图显示st的时域波形和幅频特性曲线,如图(1)所示。由图可见,三路信号时域混叠无法在时域分离。但频域是分离的,所以可以通过滤波的方法在频域分离。
在这里插入图片描述

2.要求将st中三路调幅信号分离,通过观察st的幅频特性曲线,分别确定可以分离st中三路抑制载波单频调幅信号的三个滤波器(低通滤波器、带通滤波器、高通滤波器)的通带截止频率和阻带截止频率。要求滤波器的通带最大衰减为0.1dB,阻带最小衰减为60dB。
提示:抑制载波单频调幅信号的数学表示式为
在这里插入图片描述
其中,在这里插入图片描述称为载波,在这里插入图片描述为载波频率,在这里插入图片描述称为单频调制信号,在这里插入图片描述为调制正弦波信号频率,且满足于在这里插入图片描述。由上式可见,所谓抑制载波单频调幅信号,就是两个正弦信号相乘,它有2个频率成分:和频在这里插入图片描述、差频在这里插入图片描述,这两个频率成分关于载波频率在这里插入图片描述对称。所以,1路抑制载波单频调幅信号的频谱图是关于载波频率在这里插入图片描述对称的两根谱线。容易看出,图(1)中三路调幅信号的载波频率分别为250Hz、500Hz、1000Hz。

3.编程序调用MATLAB滤波器设计函数ellipord和ellip分别设计这三个椭圆滤波器,并绘图显示其损耗函数曲线。

4.调用滤波器实现函数filter,用三个滤波器分别对信号产生函数mstg产生的信号st进行滤波,分离出st中的三路不同载波频率的调幅信号在这里插入图片描述在这里插入图片描述在这里插入图片描述,并绘图显示在这里插入图片描述在这里插入图片描述在这里插入图片描述的时域波形,观察分离效果。

三、程序代码及运行结果
实验内容1:函数产生信号
1.程序代码

function st=mstg
%产生信号序列向量st,并显示st的时域波形和频谱
%st=mstg返回三路调幅信号相加形成的混合信号,长度为N=800
N=800;                           %N为st信号的长度
Fs=10000;T=1/Fs;Tp=N*T;           %采样频率为Fs=10kHz,Tp为采样时间
t=0:T:(N-1)*T;k=0:N-1;f=k/Tp;
fc1=Fs/10;                        %第1路调幅信号的载波频率为fc1=1000Hz
fm1=fc1/10;                       %第1路调幅信号的调制信号频率为fm1=100Hz
fc2=Fs/20;                        %第2路调幅信号的载波频率为fc2=500Hz
fm2=fc2/10;                       %第2路调幅信号的调制信号频率为fm2=50Hz
fc3=Fs/40;                        %第3路调幅信号的载波频率为fc3=250Hz
fm3=fc3/10;                       %第3路调幅信号的调制信号频率为fm3=25Hz
xt1=cos(2*pi*fm1*t).*cos(2*pi*fc1*t);  %产生第1路调幅信号
subplot(311),plot((0:length(xt1)-1)/Fs,xt1);grid on
title('第一路调幅信号');
xlabel('t/s');ylabel('幅度');
xt2=cos(2*pi*fm2*t).*cos(2*pi*fc2*t);   %产生第2路调幅信号
subplot(312),plot((0:length(xt2)-1)/Fs,xt2);grid on
title('第二路调幅信号');
xlabel('t/s');ylabel('幅度');
xt3=cos(2*pi*fm3*t).*cos(2*pi*fc3*t);   %产生第3路调幅信号
subplot(313),plot((0:length(xt3)-1)/Fs,xt3);grid on
title('第三路调幅信号');
xlabel('t/s');ylabel('幅度');
st=xt1+xt2+xt3;                     %三路调幅信号相加
fxt=fft(st,N);                        %计算信号st的频谱
%绘制st的时域波形和幅频特性曲线
figure
subplot(211),plot(t,st),title('(a) s(t)的时域波形');
xlabel('t/s');ylabel('s(t)');grid on;
axis([0 Tp min(st) max(st)]);           %设置坐标轴范围
subplot(212), 
stem(f,abs(fxt)/max(abs(fxt)),'filled');    %绘制归一化幅频特性曲线
title('(b) s(t)的频谱');
xlabel('f/Hz');ylabel('幅度');grid on
axis([0 Fs/5 0 1.2]);

2.实验结果:如图(2)所示
在这里插入图片描述

3.分析与讨论

在这里插入图片描述

实验内容2:分别设计滤波器,将三路信号从st中分离
1.程序代码(详见文末获取)
2.实验结果:如图(4)、图(5)、图(6)所示
在这里插入图片描述
3.分析与讨论:分离三路分别使用了LPF、BPF和HPF,由图(4)~图(6)知,这些分离滤波器损耗函数曲线符合要求。分离出的三路信号均先振荡,后达到理想状态。另外,此部分实验内容也可采用三个带通滤波器完成。

四、思考题(答案详见文末获取)
1.请阅读信号产生函数mstg,确定三路调幅信号的载波频率和调制信号频率。

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

3.修改信号产生函数mstg,给每路调幅信号加入载波成分,产生调幅AM信号,重复本实验,观察AM 信号与抑制载波调幅信号的时域波形及其频谱的差别。

五、上机体会
实验过程中,在老师的讲解下,我明白了由于滤波器边界频率关于π归一化,故代码中w与f的转换不需要另加π;另外高通滤波器设计与低通带通稍有不同, 设计高通滤波器时ellip函数调用中还需加上’high’,即代码应为ellip(N,ap,as,wpo,‘high’),否则无法得到正确的实验结果。
通过这次上机实验,我熟悉了用双线性变换法设计IIR数字滤波器的原理和方法,学会了根据滤波需求确定滤波器指标参数,调用MATLAB信号处理工具箱中滤波器设计函数设计各种IIR数字滤波器,也掌握了IIR数字滤波器的MATLAB实现方法。


点击下方小卡片,那边发送“资源”两个字

获取完整实验报告(包括源码+思考题)

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

叶绿体不忘呼吸

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值