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

这篇具有很好参考价值的文章主要介绍了数字信号处理实验:IIR数字滤波器设计及软件实现。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

一、实验目的

二、实验原理

三、实验设备

四、实验内容及步骤

五、实验结果及分析

六、实验主程序框图及程序清单

七、实验总结


一、实验目的

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

二、实验原理

数字滤波器是对数字信号实现滤波的线性时不变系统。数字滤波实质上是一种运算过程,实现对信号的运算处理。输入数字信号(数字序列)通过特定的运算转变为输出的数字序列,因此,数字滤波器本质上是一个完成特定运算的数字计算过程,也可以理解为是一台计算机。描述离散系统输出与输入关系的卷积和差分方程只是给数字信号滤波器提供运算规则,使其按照这个规则完成对输入数据的处理。时域离散系统的频域特性:​​​​​​​​​​​​​​

数字信号处理实验:IIR数字滤波器设计及软件实现,硬件,人工智能,信号处理专题,信号处理,matlab,开发语言,图像处理

其中、分别是数字滤波器的输出序列和输入序列的频域特性(或称为频谱特性),是数字滤波器的单位取样响应的频谱,又称为数字滤经过滤波后的频域响应。只要按照输入信号频谱的特点和处理信号的目的,适当选择,使得滤波后满足设计的要求,这就是数字滤波器的滤波原理。

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

本实验的数字滤波器的MATLAB实现是指调用MATLAB信号处理工具箱函数 filter对给定的输入信号x(n)进行滤波,得到滤波后的输出信号y(n)。

三、实验设备

计算机  Matlab软件

四、实验内容及步骤

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

数字信号处理实验:IIR数字滤波器设计及软件实现,硬件,人工智能,信号处理专题,信号处理,matlab,开发语言,图像处理

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

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

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

五、实验结果及分析

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

(1)程序运行所得波形(代码见程序清单)

​​​​​​​​​​​​​​数字信号处理实验:IIR数字滤波器设计及软件实现,硬件,人工智能,信号处理专题,信号处理,matlab,开发语言,图像处理

(2)结果分析

这个函数生成了三路调幅信号并将它们相加,最后将产生的混合信号在时域和频域上绘制出图像。

在本函数中,采样频率为10kHz,产生三路调幅信号的载波频率分别为1000Hz、500Hz、250Hz,而调制信号频率则分别为100Hz、50Hz、25Hz。产生的三路信号分别通过正弦波和载波信号相乘的方式得到,且三路信号的调幅方案均为幅度调制。

绘图部分将产生的混合信号在时域和频域上直观地展现出来。其中,时域波形显示在第一个子图中,横轴为时间,纵轴为信号幅度,此处限定了横轴范围仅为采样时间的1/8,使得波形更加清晰。第二个子图中呈现了混合信号的幅频特性,即频谱图,其中横轴为频率,纵轴为信号的幅度,由于幅度峰值可能大于1,因此在绘图前将幅度归一化到最大值为1。

通过对程序的分析,我们可以看到该程序以MATLAB语言实现了生成并展示三路调幅信号的功能,方便用户对其进行研究和分析。

2.滤波器的设计:

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

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

(1)首先讨论对于滤波器参数选取,由1可知,三路调幅信号的载波频率分别为250Hz,500Hz,1000Hz。带宽为50Hz,100Hz,200Hz。所以分离混合信号st中三路抑制载波单频调幅信号的三个滤波器(低通滤波器、带通滤波器、高通滤波器)的指标参数选取如下:

对载波频率为250Hz的调幅信号,用低通滤波器分离,其通带截止频率fp=280Hz,通带最大衰减ap=0.1dB,阻带截止频率为fs=450Hz,阻带最小衰减as=60dB。对载波频率为500Hz的调幅信号,用低通滤波器分离,其通带截止频率fpl=440Hz、fph=560Hz,通带最大衰减ap=0.1dB,阻带截止频率为fsl=275Hz、fsh=900Hz阻带最小衰减as=60dB。对载波频率为1000Hz的调幅信号,用低通滤波器分离,其通带截止频率fp=890Hz,通带最大衰减ap=0.1dB,阻带截止频率为fs=600Hz,阻带最小衰减as=60dB。

(2)程序运行波形

I 低通椭圆滤波器耗损函数曲线

数字信号处理实验:IIR数字滤波器设计及软件实现,硬件,人工智能,信号处理专题,信号处理,matlab,开发语言,图像处理

II 带通椭圆滤波器耗损函数曲线

数字信号处理实验:IIR数字滤波器设计及软件实现,硬件,人工智能,信号处理专题,信号处理,matlab,开发语言,图像处理

 III 高通椭圆滤波器耗损函数曲线

数字信号处理实验:IIR数字滤波器设计及软件实现,硬件,人工智能,信号处理专题,信号处理,matlab,开发语言,图像处理

(2)结果分析

这段程序,通过调用函数mstg生成由三路抑制载波调幅信号相加构成的复合信号s,并对该信号进行椭圆滤波器的低通、带通、高通滤波、绘制出时域图和频谱图。

具体步骤如下:

调用mstg()函数生成长度为1600的由三路抑制载波调幅信号相加构成的复合信号s;

设置采样频率Fs=10000,采样间隔T=1/Fs;

分别设置低通、带通、高通滤波器的通、阻带边界频率;

该代码主要的功能之一是对由三路抑制载波调幅信号相加构成的混合信号进行滤波处理,得到低通、带通、高通三种处理后的信号。在处理过程中,使用了椭圆滤波器设计算法,并结合MATLAB中的相关函数实现。最后,通过绘制时域和频域波形图,直观地展示了滤波前后的信号变化。

3.调用滤波器实现函数filter,用三个滤波器分别对信号产生函数mstg产生的信号st进行滤波,分离出st中的三路不同载波频率的调幅信号y1(n)、y2(n)和y3(n), 并绘图显示y1(n)、y2(n)和y3(n)的时域波形,观察分离效果。

(1)代码见程序清单

具体的函数调用代码

  1. fp=280; fs=450;wp=2*fp/Fs;ws=2*fs/Fs; %低通
  2. name='y_1(t)';LHL_filter(wp,ws,name,st,T,'low');
  3. fp_L=440; fp_R=560;fs_L=275; fs_R=900;%带通
  4. wp=[2*fp_L/Fs,2*fp_R/Fs];ws=[2*fs_L/Fs,2*fs_R/Fs];
  5. name='y_2(t)'; LHL_filter(wp,ws,name,st,T,'bandpass');
  6. fp=890; fs=600;wp=2*fp/Fs;ws=2*fs/Fs; %高通
  7. name='y_3(t)';LHL_filter(wp,ws,name,st,T,'high');

(2)所得波形

I 低通y1(n)时域波形

数字信号处理实验:IIR数字滤波器设计及软件实现,硬件,人工智能,信号处理专题,信号处理,matlab,开发语言,图像处理

II 带通y2(n)时域波形

数字信号处理实验:IIR数字滤波器设计及软件实现,硬件,人工智能,信号处理专题,信号处理,matlab,开发语言,图像处理

III 高通信号y3(n)时域波形

数字信号处理实验:IIR数字滤波器设计及软件实现,硬件,人工智能,信号处理专题,信号处理,matlab,开发语言,图像处理

(3)结果分析

在上面的代码中,已经使用椭圆滤波器对信号进行了低通、带通、高通三种不同性质的滤波,并得到了滤波后的三个不同信号y1(t)、y2(t)和y3(t)。

根据滤波后的结果和时域波形图,我们可以看出:

低通滤波器提取的是载波频率最低的调幅信号,所以y1(t)中的调幅信号频率最低;

带通滤波器提取的是载波频率在中间范围内的调幅信号,所以y2(t)中的调幅信号频率居于中间;

高通滤波器提取的是载波频率最高的调幅信号,所以y3(t)中的调幅信号频率最高。

因此,通过这些滤波器的组合,我们可以有效地将复合信号分离出三路不同频率的调幅信号。

六、实验主程序框图及程序清单

1.实验主程序框图

数字信号处理实验:IIR数字滤波器设计及软件实现,硬件,人工智能,信号处理专题,信号处理,matlab,开发语言,图像处理

2. 程序清单

(代码进行了高亮处理)

(1)程序一:产生mstg信号

首先新建mstg.m文件,在该脚本文件中运行function st=mstg

  1.  function st=mstg
    %产生信号st,并显示st的时域波形和频谱
    %st=mstg返回混合信号,长度N=1600
    N=1600  %长度
    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路调幅信号?
    xt2=cos(2*pi*fm2*t).*cos(2*pi*fc2*t);%产生第2路调幅信号
    xt3=cos(2*pi*fm3*t).*cos(2*pi*fc3*t);%产生第3路调幅信号???
    st=xt1+xt2+xt3;%三路调幅信号相加
    fxt=fft(st,N);     %计算信号st的频谱
    %===============绘图部分============
    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(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)程序二:低通滤波器

  1.  function st=mstg
    %产生信号st,并显示st的时域波形和频谱
    %st=mstg返回混合信号,长度N=1600
    N=1600  %长度
    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路调幅信号?
    xt2=cos(2*pi*fm2*t).*cos(2*pi*fc2*t);%产生第2路调幅信号
    xt3=cos(2*pi*fm3*t).*cos(2*pi*fc3*t);%产生第3路调幅信号???
    st=xt1+xt2+xt3;%三路调幅信号相加
    fxt=fft(st,N);     %计算信号st的频谱
    %===============绘图部分============
    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(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('幅度')

(3)程序三:带通滤波器

Fs=10000;T=1/Fs;%采样频率Fs=10KHz,Tp为采样时间
fpl=440;fpu=560;fsl=275;fsu=900;rp=0.1;rs=60;
wp=[2*fpl/Fs,2*fpu/Fs];ws=[2*fsl/Fs,2*fsu/Fs];
[N,wp]=ellipord(wp,ws,rp,rs);
[B,A]=ellip(N,rp,rs,wp);
y2t=filter(B,A,st);
 
figure(4);
[H,w]=freqz(B,A,1000);%[h,w] = freqz(b,a,n)返回数字滤波器的n点频率响应矢量h和相应的角频率矢量w,其中分子和分母多项式系数分别存储在b和a中。
m=abs(H);
plot(w/pi,20*log(m/max(m)));
grid on;title('带通滤波损耗函数曲线');
xlabel('w/pi');ylabel('幅度'); 
figure(5);
t=0:T:(length(y2t)-1)*T;
plot(t,y2t);

(4)程序三:高通滤波器

 Fs=10000;T=1/Fs;%采样频率Fs=10KHz,Tp为采样时间
fp=890;fs=600;Rp=0.1;As=60;%设置参数
wp=2*fp/Fs;ws=2*fs/Fs;%WP,WS是通带截止频率,阻带截止频率的归一化值
[N,wpo]=ellipord(wp,ws,Rp,As,'s')
[B,A]=ellip(N,Rp,As,wpo,'high');
y3t=filter(B,A,st);
 
%=========绘图=============
figure(6);
[H,W]=freqz(B,A,1000);%[h,w] = freqz(b,a,n)返回数字滤波器的n点频率响应矢量h和相应的角频率矢量w,其中分子和分母多项式系数分别存储在b和a中。
m=abs(H);
plot(W/pi,20*log(m/max(m)));grid on;title('高通滤波损耗函数曲线');
xlabel('w/pi');
ylabel('幅度');
% axis([0,1,0,1.2*max(H)])
% % yt='y3(t)';
figure(7);
plot(t,y3t);title('高通滤波后的波形');
xlabel('t/s');ylabel(y3(t));



七、实验总结

本实验通过调用MATLAB信号处理工具箱中的滤波器设计函数和滤波器实现函数,学习了IIR数字滤波器的设计和实现方法。具体实验步骤包括:生成由三路抑制载波调幅信号相加构成的混合信号,观察其时域和频域波形,并通过椭圆滤波器的低通、带通、高通滤波处理分离出混合信号中的三路单频调幅信号;调用MATLAB的滤波器设计函数ellipord和ellip进行椭圆滤波器的设计,并绘制损耗函数曲线;调用滤波器实现函数filter对混合信号进行滤波,分离出三路单频调幅信号,并绘制其时域波形。

通过利用Matlab对混合信号st的生成、对椭圆滤波器的低通、带通、高通滤波进行处理分离,让我对Matlab的使用更加熟悉,能更加熟练的调用Matlab的内置函数进行滤波器的代码编写。整个编程的过程也让我更深入的理解了滤波器的实现原理,通过生成波形也让旅滤波的过程生动形象的呈现出来。

通过本次实验,我学习了双线性变换法设计IIR数字滤波器的原理和方法,掌握了MATLAB信号处理工具箱中各种IIR数字滤波器设计函数的使用方式和参数设置方法,深入理解了椭圆滤波器的性质和特点。同时,我也感受到在数字信号处理中滤波器的重要性,滤波器能够有效地去除信号中的噪声和干扰,提高信号的质量和可靠性。文章来源地址https://www.toymoban.com/news/detail-531411.html

到了这里,关于数字信号处理实验:IIR数字滤波器设计及软件实现的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • FPGA 的数字信号处理:Verilog 实现简单的 FIR 滤波器

    该项目介绍了如何使用 Verilog 实现具有预生成系数的简单 FIR 滤波器。 不起眼的 FIR 滤波器是 FPGA 数字信号处理中最基本的模块之一,因此了解如何将具有给定抽头数及其相应系数值的基本模块组合在一起非常重要。因此,在这个关于 FPGA 上 DSP 基础实用入门的教程中,将从一

    2024年02月09日
    浏览(49)
  • 数字信号处理-10-并行FIR滤波器MATLAB与FPGA实现

    本文介绍了设计滤波器的FPGA实现步骤,并结合杜勇老师的书籍中的并行FIR滤波器部分进行一步步实现硬件设计,对书中的架构做了复现以及解读,并进行了仿真验证。 FIR滤波器的结构形式时,介绍了直接型、级联型、频率取样型和快速卷积型4种。在FPGA实现时,最常用的是最

    2023年04月09日
    浏览(49)
  • 数字信号处理音频FIR去噪滤波器(基于MATLAB GUI的开发)

    利用MATLAB GUI设计平台,用窗函数法设计FIR数字滤波器,对所给出的含有噪声的声音信号进行数字滤波处理,得到降噪的声音信号,进行时域频域分析,同时分析不同窗函数的效果。将文件解压至一个目录下,运行m文件即可使用。 读取.wav音频文件函数 :audioread();(老版

    2024年02月08日
    浏览(56)
  • 数字信号处理翻转课堂笔记17——窗函数法设计FIR滤波器及matlab实现

    对应教材:《数字信号处理(第五版)》西安电子科技大学出版社,丁玉美、高西全著 (1)窗函数法设计FIR线性相位滤波器的原理; (2)加窗效应:加窗对滤波器特性的影响(难点); (3)典型窗函数及其主要特性和参数(重点); (4)窗函数法设计FIR滤波器的步骤(

    2024年01月16日
    浏览(53)
  • 数字信号处理|Matlab设计巴特沃斯低通滤波器(冲激响应不变法和双线性变换法)

    2.1频响图 系统函数 H 是一个复数,其图谱分为:幅度谱、相位谱 幅度谱 x轴:模拟频率f(数字频率w转化来)【 单位:赫兹Hz 】 y轴:|H1|幅度【一般用:20 * log10|H1|】【 单位:分贝dB 】  相位谱 x轴:模拟频率f(数字频率w转化来)【 单位:赫兹Hz 】 y轴:H1 的相位 2.2 各个频

    2023年04月08日
    浏览(42)
  • 现代信号处理——自适应滤波器(匹配滤波器)

    信号处理的目的是从噪声中提取信号,得到不受干扰影响的真正信号。采用的处理系统称为滤波器。 实时信号处理中,希望滤波器的参数可以根据系统或环境的变化进行更新,称为自适应滤波器。 滤波器的分类: 线性滤波器、非线性滤波器; FIR滤波器、IIR滤波器; 时域滤

    2023年04月27日
    浏览(70)
  • 现代信号处理——自适应滤波器(LMS自适应滤波器)

    一、自适应滤波简介 维纳滤波存在的问题: 适用于平稳随机信号的最佳滤波,对于非平稳的随机信号,其统计特性(相关函数)是随机的,因此无法估计其相关函数,此时的维纳滤波不适用; 维纳滤波器的参数是固定的,就不可能根据输入信号的变换去自动调整滤波器的参

    2024年02月01日
    浏览(49)
  • FPGA信号处理系列文章——深入浅出理解多相滤波器

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 多相滤波是,按照相位均匀划分把数字滤波器的系统函数H(z)分解成若干个具有不同相位的组,形成多个分支,在每个分支上实现滤波。 采用多相滤波结构,可利用多个阶数较低的滤波来实现原本阶数较

    2024年02月05日
    浏览(76)
  • 【非欧几里得域信号的信号处理】使用经典信号处理和图信号处理在一维和二维欧几里得域信号上应用低通滤波器研究(Matlab代码实现)

     💥💥💞💞 欢迎来到本博客 ❤️❤️💥💥 🏆博主优势: 🌞🌞🌞 博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️ 座右铭: 行百里者,半于九十。 📋📋📋 本文目录如下: 🎁🎁🎁 目录 💥1 概述 📚2 运行结果 2.1 算例1 2.2 算例2 2.3 算例3  2.4 算例4 

    2024年02月13日
    浏览(71)
  • 【Python 算法】信号处理通过陷波滤波器准确去除工频干扰

    对于一个信号来说通常汇入工频噪声往往是因为交流电产生的电泳,影响了我们信号采集导致信号上存在工频干扰。 那么matlab去除工频干扰可以通过陷波滤波器实现。 在python中通常使用scipy.signal实现信号的处理。 Scipy的信号处理模块(scipy.signal)来创建自定义的陷波滤波器

    2024年02月08日
    浏览(49)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包