iir滤波器的理论分析与matlab仿真,对比butter/cheby1/cheby2/ellip/yulewalk

目录

1.butter函数,巴特沃斯滤波器

2. cheby1函数,切比雪夫I型滤波器

3. cheby2函数,切比雪夫II型滤波器

4.ellip函数,椭圆滤波器

5.yulewalk函数,Yule-Walker滤波器

6.各函数对比分析


IIR滤波器即无限长单位冲激响应滤波器,其输出不仅依赖当前输入,还依赖历史输出,核心特征是存在反馈回路,冲激响应理论上无限长。IIR滤波器的差分方程为:

其中:

1.butter函数,巴特沃斯滤波器

巴特沃斯滤波器的核心是最大平坦幅频特性,通带内无纹波,阻带单调衰减。

在MATLAB中,butter函数的程序如下:

Fs = 1200; % 采样频率 Fc = 100; % 截止频率 [n, Wn] = buttord(Fc/(Fs/2), 120/(Fs/2), 1, 40); % 确定阶数和归一化截止频率 [b, a] = butter(n, Wn); % 设计滤波器(b=分子系数,a=分母系数) [h, f] = freqz(b, a, 1024, Fs); % 计算频率响应 % 绘图 figure; subplot(2,1,1); plot(f, 20*log10(abs(h))); title('巴特沃斯幅频响应'); xlabel('频率(Hz)'); ylabel('幅度(dB)'); grid on; subplot(2,1,2); plot(f, unwrap(angle(h))); title('巴特沃斯相频响应'); xlabel('频率(Hz)'); ylabel('相位(rad)'); grid on;

其幅频响应如下图所示:

2. cheby1函数,切比雪夫I型滤波器

切比雪夫I型:通带等纹波,阻带单调衰减,以通带纹波换取更陡的过渡带。

在MATLAB中,cheby1函数的程序如下:

% 设计切比雪夫I型低通滤波器:通带纹波1dB,阻带衰减40dB Fs = 1200; Fc = 100; Fs_stop = 120; Rp = 1; Rs = 40; [n, Wn] = cheb1ord(Fc/(Fs/2), Fs_stop/(Fs/2), Rp, Rs); [b, a] = cheby1(n, Rp, Wn); % 核心函数:阶数、通带纹波、归一化截止频率 [h, f] = freqz(b, a, 1024, Fs); % 绘图 figure; subplot(2,1,1); plot(f, 20*log10(abs(h))); title('切比雪夫I型幅频响应'); xlabel('频率(Hz)'); ylabel('幅度(dB)'); grid on; subplot(2,1,2); plot(f, unwrap(angle(h))); title('切比雪夫I型相频响应'); xlabel('频率(Hz)'); ylabel('相位(rad)'); grid on;

其幅频响应如下图所示:

3. cheby2函数,切比雪夫II型滤波器

切比雪夫II型:通带单调,阻带等纹波,纹波出现在阻带,通带保持平坦。

其中:ωs​为阻带截止频率,其余参数同切比雪夫I型。

在MATLAB中,cheby2函数的程序如下:

% 设计切比雪夫II型低通滤波器:阻带纹波40dB,通带平坦 Fs = 1200; Fc = 100; Fs_stop = 120; Rp = 1; Rs = 40; [n, Wn] = cheb2ord(Fc/(Fs/2), Fs_stop/(Fs/2), Rp, Rs); [b, a] = cheby2(n, Rs, Wn); % 核心函数:阶数、阻带衰减、归一化截止频率 [h, f] = freqz(b, a, 1024, Fs); % 绘图 figure; subplot(2,1,1); plot(f, 20*log10(abs(h))); title('切比雪夫II型幅频响应'); xlabel('频率(Hz)'); ylabel('幅度(dB)'); grid on; subplot(2,1,2); plot(f, unwrap(angle(h))); title('切比雪夫II型相频响应'); xlabel('频率(Hz)'); ylabel('相位(rad)'); grid on;

其幅频响应如下图所示:

4.ellip函数,椭圆滤波器

椭圆滤波器,考尔滤波器:通带和阻带均等纹波,过渡带最陡,阶数最低,但相位非线性最强。

其中:Rn(x)为n阶椭圆有理函数,由雅可比椭圆函数推导,核心特征是通带/阻带均有纹波,实现最小阶数下的最陡衰减。

在MATLAB中,ellip函数的程序如下:

Fs = 1200; Fc = 100; Fs_stop = 120; Rp = 1; Rs = 40; [n, Wn] = ellipord(Fc/(Fs/2), Fs_stop/(Fs/2), Rp, Rs); [b, a] = ellip(n, Rp, Rs, Wn); % 核心函数:阶数、通带纹波、阻带衰减、归一化截止频率 [h, f] = freqz(b, a, 1024, Fs); % 绘图 figure; subplot(2,1,1); plot(f, 20*log10(abs(h))); title('椭圆滤波器幅频响应'); xlabel('频率(Hz)'); ylabel('幅度(dB)'); grid on; subplot(2,1,2); plot(f, unwrap(angle(h))); title('椭圆滤波器相频响应'); xlabel('频率(Hz)'); ylabel('相位(rad)'); grid on;

其幅频响应如下图所示:

5.yulewalk函数,Yule-Walker滤波器

Yule-Walker滤波器是基于频域采样的IIR滤波器设计方法,通过最小二乘法拟合期望的幅频响应,无显式闭合公式,核心步骤:

给定频点和对应幅度,构造期望频率响应;

计算自相关函数;

解Yule-Walker方程Ra=r(R为自相关矩阵,a为分母系数,r为自相关向量),得到滤波器系数。

在MATLAB中,yulewalk函数的程序如下:

% 设计Yule-Walker滤波器:拟合自定义幅频响应 Fs = 1200; f = [0, 80, 100, 250,600]/(Fs/2); % 归一化频点(0~1) m = [1, 1, 0.5, 0, 0]; % 对应频点的幅度 n = 8; % 滤波器阶数 [b, a] = yulewalk(n, f, m); % 核心函数:阶数、频点、幅度 [h, freq] = freqz(b, a, 1024, Fs); % 绘图 figure; plot(f*(Fs/2), m, 'ro-', freq, abs(h), 'b-'); title('Yule-Walker滤波器:期望vs实际幅频响应'); xlabel('频率(Hz)'); ylabel('幅度'); legend('期望','实际'); grid on;

其幅频响应如下图所示:

6.各函数对比分析

函数幅频特性过渡带陡峭度相位非线性阶数(相同指标)适用场景
butter通带无纹波,阻带单调平缓较小最高要求通带平坦、相位线性(如音频)
cheby1通带等纹波,阻带单调较陡中等中等允许通带纹波,需较陡过渡带
cheby2通带单调,阻带等纹波较陡中等中等要求通带平坦,允许阻带纹波
ellip通带 + 阻带均等纹波最陡最大最低阶数受限、过渡带要求极高(如通信)
yulewalk拟合自定义幅频响应灵活不确定按需设定非标准滤波器(自定义频响)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1125509.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java进阶--多线程学习

java进阶–多线程学习 java进阶–多线程学习(1) java进阶–多线程学习(1) 1.并行与并发的概念 并发是指一个处理器同时处理多个任务。 并行是指多个处理器或者是多核的处理器同时处理多个不同的任务。 并发是逻辑上的同时发生&…

Java进阶教程(一)关键字

Java进阶教程(一) 关键字 synchronized:当它用来修饰一个方法或者一个代码块的时候,能够保证在同一时刻最多只有一个线程执行该段代码。 instanceof:在运行时指出对象是否是特定类的一个实例。 result object instanc…

AI(人工智能)是模拟人类智能行为的技术,如学习、推理、识别

AI(人工智能)是模拟人类智能行为的技术,如学习、推理、识别等。大模型通常指参数量巨大的深度学习模型(如GPT、BERT),依赖海量数据和算力进行训练,在自然语言处理、图像生成等领域表现卓越。前端…

C++内存序

在 C 中&#xff0c;内存序&#xff08;Memory Order&#xff09;是多线程编程中原子操作的重要概念&#xff0c;它用于控制原子操作的内存同步行为。C11 引入了 <atomic> 头文件&#xff0c;提供了内存序来控制多线程环境下的内存访问顺序。内存序的作用内存序主要解决两…

【课程设计/毕业设计】基于机器学习python深度学习的道路坑洼识别

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

FPGA应用开发和仿真【3.3】

7.1.4 离散量化信号的信噪比 不失一般性,考虑一个幅度为1、频率为1的正弦信号a(t)=sin(2πt),经过采样周期Ts的采样离散化之后,如果被DAC以零阶保持特性输出,将得到信号: 如果还经过分辨力δ的量化,取最接近的量化阶梯,将得到信号: 其中 符号表示取最接近自变量的…

linux redis简单操作

linux redis简单操作 1、centOS 系统安装redis https://blog.csdn.net/weixin_42835409/article/details/119562074 2、安装完成后终端输入redis-cli 报 redis-cli -bash: redis-cli: command not found 问题解决 进入到redis文件下src/bin目录下 将redis-cli 复制到 /usr/loc…

要实现应用的高弹性、可扩展性与快速迭代,可以结合现代云原生技术栈,包括容器化(如Docker)、Kubernetes编排、微服务架构

要实现应用的高弹性、可扩展性与快速迭代&#xff0c;可以结合现代云原生技术栈&#xff0c;包括容器化&#xff08;如Docker&#xff09;、Kubernetes编排、微服务架构、服务网格&#xff08;如Istio&#xff09;以及CI/CD流水线。以下是整体架构设计与关键实践&#xff1a;容…

Java进阶文件输入输出实操(图片拷贝)

Java进阶文件输入输出实操&#xff08;图片拷贝&#xff09;把某个目录下的全部图片&#xff0c;全部拷贝到另外一个目录 package test; import domee.chapter6_7.B; import java.io.*; public class Ex10_10 { public static void main(String[] args) throws IOException { S…

深度测评8个一键生成论文工具,专科生毕业论文轻松搞定!

深度测评8个一键生成论文工具&#xff0c;专科生毕业论文轻松搞定&#xff01; AI 工具如何助力论文写作&#xff1f; 在当今学术环境中&#xff0c;越来越多的专科生开始借助 AI 工具来提升论文写作效率。这些工具不仅能够快速生成初稿&#xff0c;还能有效降低 AIGC&#xff…

爆火!7款AI写论文神器,20分钟生成2.5万字问卷类论文,真实参考文献!

深夜急救&#xff01;论文Deadline倒计时3天&#xff1f;这7款AI工具能救你 凌晨2点&#xff0c;电脑屏幕上的论文文档还是空白页——导师催稿的消息弹了出来&#xff0c;问卷数据还没整理&#xff0c;参考文献格式一团糟&#xff0c;查重率更是飙到40%以上……如果你正在经历…

深度测评2026最新!9款AI论文软件评测:本科生毕业论文全场景推荐

深度测评2026最新&#xff01;9款AI论文软件评测&#xff1a;本科生毕业论文全场景推荐 2026年AI论文工具测评&#xff1a;为何值得一看&#xff1f; 随着人工智能技术的不断进步&#xff0c;AI论文辅助工具在学术领域的应用日益广泛。对于本科生而言&#xff0c;撰写毕业论文不…

在软件开发中,熟练掌握一些常用工具如 Git、Docker 和 IDE 可以极大提升开发效率和协作质量

在软件开发中&#xff0c;熟练掌握一些常用工具如 Git、Docker 和 IDE 可以极大提升开发效率和协作质量。以下是这些工具的实用使用技巧&#xff1a; Git 使用技巧 合理使用分支管理 使用 git feature/xxx 命名功能分支&#xff0c;hotfix/xxx 修复紧急问题。推荐使用 Git Flow…

在磁盘调度中,当进程请求读写磁盘时,操作系统需依次进行移臂调度和旋转调度,以高效定位数据所在的物理位置

一、磁盘调度部分 在磁盘调度中&#xff0c;当进程请求读写磁盘时&#xff0c;操作系统需依次进行移臂调度和旋转调度&#xff0c;以高效定位数据所在的物理位置。移臂调度&#xff08;最短寻道时间优先&#xff0c;SSTF&#xff09; 当前磁头位于 18 号柱面。根据最短寻道时间…

什么是Leader AP

文章目录为什么需要Leader APLeader AP是如何工作的Leader AP有哪些组网方式哪些Wi-Fi设备支持Leader APLeader AP是FAT AP的一个扩展功能&#xff0c;是指FAT AP能够像WAC一样&#xff0c;可以和多个FIT AP一起组建WLAN&#xff0c;由FAT AP统一管理和配置FIT AP&#xff0c;为…

【课程设计/毕业设计】基于python机器学习的苹果和西红柿识别

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

React Native本地通知与JNI

React Native本地通知与JNI&#xff1a;跨平台原生能力集成深度解析 关键词&#xff1a;React Native、本地通知、JNI、Android原生开发、iOS原生模块、跨平台桥接、移动应用开发 摘要&#xff1a;本文深入探讨在React Native中实现本地通知功能的核心技术&#xff0c;重点解析…

在 Ubuntu 18.04 (WSL) 上配置 LazyVim

在 Ubuntu 18.04 (WSL) 上配置 LazyVim 的终极指南&#xff1a;解决 GLIBC 和 Tree-sitter 依赖难题 前言 在 Ubuntu 18.04 这种“古董”系统上安装现代化的 Neovim 配置&#xff08;如 LazyVim&#xff09;是一场噩梦。 LazyVim 要求 Neovim > 0.10&#xff0c;而 Ubuntu 1…

【超全解析】前端如何优雅地判断是否为移动端?从 UA 检测到现代解决方案

【超全解析】前端如何优雅地判断是否为移动端&#xff1f;从 UA 检测到现代解决方案 在前端开发中&#xff0c;「判断当前访问设备是否为移动端」几乎是一个绕不开的问题。 无论是 响应式布局、条件渲染、跳转 H5 / PC 站点、性能优化&#xff0c;还是 埋点分析&#xff0c;都可…

Linux Kernel 4.4 `printk` 源码分析与使用详解

Linux Kernel 4.4 printk 源码分析与使用详解 参考资料&#xff1a;百问网 - UART子系统Kernel版本&#xff1a;Linux 4.4.154开发板&#xff1a;Firefly-RK3288关键文件&#xff1a;kernel/printk/printk.c, include/linux/kern_levels.h 一、printk 的基本使用与打印级别 调…