MATLAB——IIR数字滤波器的设计

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

1.基础知识
1.1、数字滤波器设计的基本步骤
我们知道模拟滤波器的设计是数字滤波器的设计的基础。在学习数字信号处理的过程中,IIR数字滤波器的设计的步骤是
(1)确定采样间隔Ts或者采样频率fs。
(2)根据模拟频率和数字频率之间的关系,将所给出的数字滤波器的指标转化为模拟滤波器的指标。(Ω=ω/Ts)
(3)根据模拟滤波器的指标设计模拟滤波器。
(4)根据冲激响应不变法和双线性变换法,将H(s)转化为H(z)。

1.2、冲激响应不变法
根据 z = e s T z=e^{sT} z=esT,将S平面映射到Z平面,但不是一对一的映射。冲激响应不变法只适合用于有限带宽的滤波器设计。

1.3、双线性变换法
通过对S平面进行压缩,消除了频谱混叠的现象。但是在这个过程中产生了非线性畸变,所以说要进行校正。这个方法的S平面与Z平面的映射关系为
s = 2 T ∗ 1 − z − 1 1 + z − 1 s=\frac{2}{T}*\frac{1-z^{-1}}{1+z^{-1}} s=T21+z11z1
预畸变校正公式为
Ω = 2 T ∗ t a n ( ω 2 ) Ω=\frac{2}{T}*tan(\frac{ω}{2}) Ω=T2tan(2ω)
2.具体题目
2.1、题目1(脉冲响应不变法)
用脉冲响应不变法设计Butterworth低通数字滤波器,要求通带频率为 ,通带波纹小于1dB,阻带频率为 ,幅度衰减大于15dB,采样频率为Fs=2000Hz。
这里面有几个MATLAB自带的函数,需要解释一下
首先回顾一下模拟滤波器设计里面的函数
[n,wn]=buttord(fp,fs,rp,as,‘s’);
这个函数用于计算巴特沃斯滤波器的阶数和截止频率。它的输入参数包括通带截止频率(fp)、阻带截止频率(fs)、通带最大衰减(rp)和阻带最小衰减(as),以及滤波器的类型('s’表示模拟滤波器,'z’表示数字滤波器)。这个函数的输出包括阶数(n)和截止频率(wn)。
[z,p,k]=buttap(n);
这个函数用于生成一个巴特沃斯滤波器的极点和零点。它的输入参数是阶数(n),它的输出参数是极点(p)和零点(z),以及一个系数(k),用于归一化滤波器的增益。
[b,a]=zp2tf(z,p,k);
zp2tf:这个函数用于将极点和零点转换为传递函数的分子和分母形式。它的输入参数是极点(p)、零点(z)和系数(k),它的输出是分子系数(b)和分母系数(a)。
变换到数字滤波器的函数
[b,a]=lp2lp(B,A,Wn)
一个低通原型变换为具有不同截止频率的低通滤波器,这里规定了截止频率Wn,输入分别是模拟滤波器分子、分母的系数,以及前面求得的截止频率。
[bz,az]=impinvar(b,a,fs);
impinvar 函数使用脉冲响应不变法将模拟滤波器变换为数字滤波器。具体地,impinvar 函数先对模拟滤波器进行离散化,然后使用离散化后的脉冲响应作为数字滤波器的脉冲响应。
注意
freqz和freqs
freqz 和 freqs 是 MATLAB 中用于绘制滤波器频率响应的函数。(j简而言之,一个离散,一个连续)
freqz 函数可以绘制数字滤波器的离散时间频率响应,其语法为:
freqz(b,a,n,fs)
其中,b 和 a 分别是数字滤波器的分子系数和分母系数,n 是计算离散时间频率响应的点数,fs 是采样频率。

freqs 函数则可以绘制模拟滤波器的频率响应,其语法为:
freqs(b,a,w)
其中,b 和 a 分别是模拟滤波器的分子系数和分母系数,w 是计算频率响应的频率点。需要注意的是,freqs 函数计算的是模拟滤波器的频率响应,因此输入的频率参数 w 是以弧度为单位的。
代码

clc;
%写出已知条件,设置采样点数
wp=0.25*pi;ws=0.4*pi;
rp=1;as=15;
fs=2000;Nn=128;
%由数字指标映射到模拟滤波器指标
WP=wp*fs;WS=ws*fs;
%利用巴特沃斯滤波器的设计方法,设计一个模拟滤波器
[N,Wn]=buttord(WP,WS,rp,as,'s');
[z,p,k]=buttap(N);
[B,A]=zp2tf(z,p,k);
%转换到数字滤波器
[b,a]=lp2lp(B,A,Wn);%从一个低通原型变换为具有不同截止频率的低通滤波器
[bz,az]=impinvar(b,a,fs);%根据冲激响应不变法得到数字滤波器
freqz(bz,az,Nn,fs);

运行结果
MATLAB——IIR数字滤波器的设计
2.2题目2(双线性变换法)
用双线性变换法设计Butterworth低通数字滤波器,要求通带频率为 ,通带波纹小于1dB,阻带频率为 ,幅度衰减大于15dB,采样频率为Fs=100Hz。
有了上面的基础,我们来进行类比学习。

WS=2*fs*tan(ws/2);
WP=2*fs*tan(wp/2);

增加校正畸变的过程。

[bz,az]=bilinear(b,a,fs);

换成双线性不变法

freqz(bz,az,Nn,fs);

[H,w]=freqz(bz,az);
figure;
subplot(211);
plot(w/pi,abs(H));
subplot(212);
plot(w/pi,angle(H));

最后绘图部分,我是做了个对比。
第一个是直接freqz绘制的幅频和相频图像。
freqz函数计算数字滤波器的频率响应,返回的是频率响应的幅度和相位信息。其中w是频率,H是频率响应的复数值。因为通常我们更关心的是频率在 0 0 0 π π π之间的变化情况,所以使用plot(w/pi,abs(H))和plot(w/pi,angle(H))将频率从弧度变为单位圆上的比例。就是我第二个绘图窗口的文件。

完整代码

wp=0.25*pi;ws=0.4*pi;
rp=1;as=15;
fs=100;
Ts=1/fs;
Nn=128;

WS=2*fs*tan(ws/2);
WP=2*fs*tan(wp/2);

[N,Wn]=buttord(WP,WS,rp,as,'s');
[z,p,k]  =buttap(N);
[B,A]=zp2tf(z,p,k);
[b,a]=lp2lp(B,A,Wn);
[bz,az]=bilinear(b,a,fs);

freqz(bz,az,Nn,fs);

[H,w]=freqz(bz,az);
figure;
subplot(211);
plot(w/pi,abs(H));
subplot(212);
plot(w/pi,angle(H));

运行结果
MATLAB——IIR数字滤波器的设计
MATLAB——IIR数字滤波器的设计文章来源地址https://www.toymoban.com/news/detail-422255.html

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

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

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

相关文章

  • 数字信号处理第四次试验:IIR数字滤波器设计及软件实现

    为了帮助同学们完成痛苦的实验课程设计,本作者将其作出的实验结果及代码贴至CSDN中,供同学们学习参考。如有不足或描述不完善之处,敬请各位指出,欢迎各位的斧正! (1)熟悉用双线性变换法设计IIR数字滤波器的原理与方法; (2)学会调用MATLAB信号处理工具箱中滤

    2024年02月08日
    浏览(44)
  • Sigma-delta ADC数字抽取滤波器的verilog与MATLAB设计

           模数转换器根据采样率的不同发展为奈奎斯特(Nyquist)型和过采样(Oversampling)型两大类。奈奎斯特型ADC 采用2-3倍信号带宽的采样时钟进行采样。过采样型ADC采用过采样技术和噪声整形技术,以远高于2倍信号带宽的采样时钟进行采样,将信号中的噪声搬移到高频以

    2024年04月26日
    浏览(75)
  • IIR滤波器

    IIR的特点是:非线性相位、消耗资源少。 IIR滤波器的系统函数与差分方程如下所示: 由差分方程可知IIR滤波器存在反馈,因此在FPGA设计时要考虑到有限字长效应带来的影响。差分方程中包括两个部分:输入信号x(n)的M节延时网络,相当于FIR的网络结构,实现系统的零点;输

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

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

    2024年01月16日
    浏览(52)
  • 【电赛仪器仪表】基于MATLAB的数字滤波器设计与ARM官方DSP库的结合

    数字滤波器是对数字信号进行滤波处理以得到期望的响应特性的离散时间系统。作为一种电子滤波器,数字滤波器与完全工作在模拟信号域的模拟滤波器不同。数字滤波器工作在数字信号域,它处理的对象是经由采样器 件将模拟信号转换而得到的数字信号。 简单而言,数字

    2024年02月16日
    浏览(47)
  • 数字信号处理|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日
    浏览(41)
  • 数字电路基础知识系列(六)之LC滤波器的基础知识

    LC滤波器,是指将电感(L)与电容器 ©进行组合设计构成的滤波电路,可去除或通过特定频率的无源器件。电容器具有隔直流通交流,且交流频率越高越容易通过的特性。而电感则具有隔交流通直流,且交流频率越高越不易通过的特性。因此,电容器和电感是特性完全相反的被

    2024年02月03日
    浏览(87)
  • 基于FPGA的IIR滤波器的实现

    IIR滤波器原理以及架构在此不做阐述,如何从模拟滤波器到数字滤波器进行设计,可参考 https://blog.csdn.net/k331922164/article/details/117265704?spm=1001.2101.3001.6661.1utm_medium=distribute.pc_relevant_t0.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7ERate-1-117265704-blog-123083652.235%5Ev38%5Epc_relevant_anti_t3_based

    2024年02月04日
    浏览(38)
  • 嵌入式常用的算法 - 二阶IIR低通滤波器

    二阶IIR低通滤波算法是一种电路模拟滤波器,它通过将高频部分的信号衰减来消除噪声。这种滤波器使用了二阶差分方程来描述信号的变化,因此被称为二阶IIR低通滤波器。 具体来说,二阶IIR低通滤波器通过将高频部分的信号衰减来消除噪声。高频部分的信号是指频率高于截

    2023年04月08日
    浏览(37)
  • 孩子都能学会的FPGA:第十六课——用FPGA实现IIR滤波器滤波

    (原创声明:该文是 作者的原创 ,面向对象是 FPGA入门者 ,后续会有进阶的高级教程。宗旨是 让每个想做FPGA的人轻松入门 , 作者不光让大家知其然,还要让大家知其所以然 !每个工程作者都搭建了全自动化的仿真环境,只需要双击 top_tb.bat 文件就可以完成整个的仿真(前

    2024年01月21日
    浏览(58)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包