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

article/2025/10/9 6:21:23

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);

运行结果
在这里插入图片描述
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));

运行结果
在这里插入图片描述
在这里插入图片描述


http://chatgpt.dhexx.cn/article/jDlexn38.shtml

相关文章

Matlab的freqz()函数和窗函数法fir1()一起使用

窗函数法设计FIRDF使用Matlab的fir1()函数十分方便,DSP课堂上已经讲过,此处不再赘述。关心的是: 使用 hn fir1(M, wc);%M为滤波器阶数M,长度N&…

matlab filter freqz

1.滤波函数filter 利用滤波器H(Z)b/a,对X滤波 ba为向量 滤波器传输函数H(Z)的分子分母:b,a 利用b,a表征H即滤波器 2.freqz Hb/a,由b和a提取H和数字角频率w 2.1[h,w] freqz(b,a,n) n默认512&#xff0…

matlab:<三>freqz函数

【转载:博客】 一 函数调用介绍 MATLAB提供了专门用于求离散系统频响特性的函数freqz(),调用freqz()的格式有以下几种: (1)[H,w]freqz(B,A,N); %N默认值为512 (2)[H,w]freqz(B,A,N,whole); (3)[H,w]freqz(B,A,[自定义区间]); 上式中B和A分别对应离散系统…

freqz()函数

2、离散系统的频率特性 同连续系统的系统函数H(s)类似,离散系统的系统函数H(z)也反映了系统本身固有的特性。对于离散系统来说,如果把其系统函数H(z)中的复变量z换成,那么所得的函数就是此离散系统的频率响应特性,即离散时间系统的频率响应为: 其中, 称为离散系统的幅频…

信号与系统 实验四:信号与系统复频域分析(2 学时)

注明:这是学校专业课实验,利用网站做一个学习和记录。有错的地方希望好心人指点一下。 一、实验目的 1.学会用 MATLAB 进行部分分式展开; 2.学会用 MATLAB 分析 LTI 系统的特性; 3.学会用 MATLAB 进行 Laplace 正、反变换。…

MATLAB中freqz函数的用法

本文引用自乱七八糟 《MATLAB中freqz函数的用法》 FREQZ 是计算数字滤波器的频率响应的函数 [H,W] FREQZ(B,A,N)returns the N-point complex frequency response vector H and the N-point frequency vector W in radians/sample of the filter: 函数的输出:a.滤波…

fft和freqz的区别

http://www.ilovematlab.cn/thread-245794-1-1.html 最近在研究matlab画频谱图,在查找资料过程,在matlab中文论坛中看到一篇帖子,感觉比较有用,简单整理了一下。 一、FFT函数 假设原始信号为x,则fft_xabs(fft(x))得…

MATLAB R2021a无法识别freqz_m

MATLAB R2021a中能识别的函数是freqz,但是无法识别freqz_m函数。 方法一: 若只想了解图像趋势,可以直接用freqz函数替代freqz_m函数,因为freqz_m函数可以有多个输出,但是freqz函数只有两个,所以可以分次进…

【matlab】freqz函数的使用(二)

freqz函数计算线性系统的频率响应,包括幅频响应和相频响应,基本输入为线性系统的AMMA模型系数向量,一个典型的AMMA模型为 % jw -jw -jmw % jw B(e) b(1) b(2)e .... b(m1)e % H(e) ---- -----------------------…

freqz()

实函数的傅里叶变换的幅度谱是偶函数,其相位谱为奇函数。这一特性在信号分析中得到广泛应用。 离散系统频响特性的函数freqz() [H,W ] freqz(b,a,n)返回量H则包含了离散系统频响在 0~pi范围内N个频率等分点…

MATLAB函数freqz的使用

(一)、它是数字滤波器的频率响应(包括幅频响应和相频响应) (二)、主要的形式: [h,w] freqz(b,a,n)[h,w] freqz(sos,n)[h,w] freqz(d,n)[h,w] freqz(___,n,whole)[h,f] freqz(___,n,fs)[h,f] freqz(___,n,whole…

频率响应说明

目录 数字域 模拟域 数字域 freqz 使用基于 FFT 的算法来计算数字滤波器的 Z 变换频率响应。具体来说,语句 [h,w] freqz(b,a,p) 返回数字滤波器的包含 p 个点的复频率响应 在其最简单的形式中,freqz 接受滤波器系数向量 b 和 a 以及整数 p&#xf…

详解MATLAB之freqz()函数

一 函数调用介绍 MATLAB提供了专门用于求离散系统频响特性的函数freqz(),调用freqz()的格式有以下几种: (1)[H,w]freqz(B,A,N); %N默认值为512 (2)[H,w]freqz(B,A,N,whole); (3)[H,w]freqz(B,A,[自定义区间]); 上式中B和A分别对应离散系统的系统函…

Matlab中freqz函数使用

目录 语法 输入参数 输出参数 说明 示例 传递函数的频率响应 二阶部分的频率响应 FIR滤波器的频率响应 FIR带通滤波器的频率响应 freqz函数是求解数字滤波器的频率响应。 语法 [h,w] freqz(b,a,n)[h,w] freqz(sos,n)[h,w] freqz(d,n)[h,w] freqz(___,n,whole)[h…

计算机网络实验三 rdt协议

实验目的 熟悉各种不同 rdt 协议的运行环境,对照教材理解给出的 rdt 协议源码,理解并掌握不同链路特性对 rdt 协议性能的影响。比较不同 rdt 协议适应的运行环境。 准备阶段 进入Linux操作系统,将实验文件复制到Ubuntu内,观察到文件内包含Makefile文件,于是在命令行内将…

慧荣SM2262EN跑RDT教程

本次教程使用材料: 板子:2262EN公版4贴 颗粒:英特尔 PF29F04T2AOCTJ1 *4(ID:89,C4,18,32,A2,00)单颗512G 8CE B27A制程 缓存:镁光D9STQ *2(单颗512M 16bit1G的DDR3) &…

可靠传输协议 rdt 1.0、rdt 2.0、rdt 2.1、rdt 2.2、rdt3.0

转载自:https://blog.csdn.net/springtostring/article/details/80379841 计算机网络的设计基本方案是复杂化,多功能化应用层,运输层的协议设计,从而使得网络层,链路层,物理层变得相对简单,网络…

【计算机网络】三传输层--可靠传输原理rdt、GBN、SR

4、可靠数据传输原理 为上层实体提供的服务:数据可以通过一条可靠的信道进行传输。借助可靠信道,传输数据比特不会受到损坏或者丢失,而且所有数据都是按照其发送顺序进行交付。 那么,可靠传输协议的责任就是实现抽象服务&#xf…

linux内核的挂载,通过Linux内核使用RDT

8种机械键盘轴体对比 本人程序员,要买一个写代码的键盘,请问红轴和茶轴怎么选? Intel RDT特性详解介绍了RDT的基本概念,以及通过PQOS工具使用RDT。本文主要是介绍如何通过内核来使用RDT。 我的内核版本为4.14.32,内核对…

rdt不同版本(rdt1.0,rdt2.0,rdt2.1,rdt2.2,rdt3.0)协议的特点以及发送端接收端的FSM

两个简单概念 可靠数据传输(Reliable Data Transfer,rdt),发送方通过该协议把数据交给更底层(比如传输层交给网络层),底层负责传输,接收方再通过该协议把数据取出。 有限状态机(Finite-state machine, FSM)&#xff…