【MATLAB】FIR滤波器的MATLAB实现

FIR滤波器的MATLAB实现

  • FIR滤波器的设计
  • fir1函数
  • fir2函数

与IIR滤波器相比,FIR滤波器既有其优势也有其局限性。FIR滤波器的主要优点包括:

  • 精确的线性相位响应;
  • 永远保持稳定性;
  • 设计方法通常是线性的;
  • 在硬件实现中具有更高的运行效率;
  • 启动传输仅需有限的时间。

然而,FIR滤波器也存在一些显著的缺点

  • 为了达到与IIR滤波器相同的性能要求,FIR滤波器通常需要更高的阶数;
  • 相应地,FIR滤波器的延迟时间比具备相同性能的IIR滤波器要高得多。

FIR滤波器的设计

MATLAB 信号处理工具箱提供了表1用于设计 FIR 数字滤波器的方法和工具函数。

设计方法说明工具函数
窗函数法对理想滤波器进行加窗处理,并根据滤波器的性能指标截取某一段,以近似地实现理想滤波器fir1, fir2, kaiserord
多带和过渡带等波纹或者最小二乘法逼近频率范围内的子带firls, firpm, firpmord
约束最小二乘法满足最大误差限制条件下使整个频带平方误差最小化fircls, fircls1
任意响应法任意响应,包括非线性相位和复杂滤波器cfirpm
升余弦法具有光滑余弦过渡带的低通滤波器的设计firreos
表1. FIR 数字滤波器设计方法和工具函数

窗函数法是设计FIR滤波器的重要方法之一,本文主要介绍FIR滤波器的窗函数设计方法。

在实际应用中,遇到的离散时间信号通常是有限长度的,因此在信号处理中不可避免地会遇到数据截短的问题。对于离散序列的截短,可以通过序列与窗函数的相乘来实现。

常用的窗函数包括矩形窗、巴特利特(Bartlett)窗、三角窗、海明(Hamming)窗、汉宁(Hanning)窗、布莱克曼(Blackman)窗、切比雪夫(Chebyshev)窗和凯泽(Kaiser)窗。MATLAB信号处理工具箱提供了一组用于生成这些窗函数的函数,具体见表2。

函数函数功能
w=bartlett(n)生成巴特立特 ( Bartlett ) 窗
w=blackman(n)生成布莱克曼 ( Blackman ) 窗
w=boxcar(n)生成矩形窗
w=chebwin(n)生成切比雪夫 ( Chebyshev ) 窗
w-hamming(n)生成海明 ( Hamming ) 窗
w=hanning(n)生成汉宁 ( Hanning ) 窗
w=kaiser(n)生成凯泽 ( Kaiser ) 窗
w=triang(n)生成三角窗
函数说明n为窗的长度
表2. MATLAB 信号处理工具箱窗函数汇总

fir1函数

MATLAB信号处理工具箱提供了基于加窗的线性相位FIR滤波器设计函数 fir1 和 fir2。fir1 函数的调用语法如下:

b=fir1(n,Wn,'fype',window)

其中:

  • n 表示滤波器的阶数。
  • ftype 表示所设计滤波器的类型,可选参数包括:
    • high:高通滤波器
    • stop:带阻滤波器
    • DC-1:多通带滤波器,第一频带为通带
    • DC-0:多通带滤波器,第一频带为阻带
    • 默认情况下,fir1 设计的是低通或带通滤波器。
  • window 为窗函数,是一个长度为 n+1 的列向量。默认情况下,函数自动使用 Hamming 窗。

例1. 设计一个48阶的FIR带通滤波器,通带范围为0.35≤w≤0.65。

clc;clear;closeb = fir1(48,[0.35 0.65]); % 调用fir1函数进行FIR带通滤波器设计
freqz(b,1,512)            % 画出幅频和相频响应图

输出的频率响应特性如图1所示:

在这里插入图片描述

图1. FIR带通滤波器幅频特性

例2. 用窗函数法设计多通带滤波器,归一化通带为[0 0.2]、[0.4 0.6]、[0.8 1]。由于高频端为通带,因此滤波器的阶数应为偶数,这里定为40。

首先将通带要求用向量w来表示,然后调用fir1函数进行滤波器设计。

w=[0.2 0.4 0.6 0.8]; % 滤波器设计参数
b=fir1(40,w,'dc-1'); % 用窗函数法设计多通带滤波器
freqz(b,1,512)       % 绘制幅频-相频特性图

输出的幅频-相频特性如图2所示。

在这里插入图片描述

图2. 多通带滤波器幅频-相频特性

fir2函数

MATLAB信号处理工具箱提供了fir2函数,用于基于频率采样的有限冲激响应(FIR)滤波器设计。其调用语法如下:

b = fir2(n, f, m, npt, lap, window)
  • n:滤波器的阶数。
  • f:频率向量,其取值范围在 [0, 1] 之间。
  • m:幅度响应向量,其取值范围也在 [0, 1] 之间。
  • npt:用于频率响应插值的点数,默认值为 512。
  • lap:一个参数,用于指定 fir2 在重复频率点附近插入的区域大小。
  • window:窗函数类型,其长度必须为 n + 1,默认使用 Hamming 窗。
  • b 向量表示返回的滤波器系数。

例3. 设计一个50阶低通滤波器,并且绘制理想频率响应和实际频率响应图。

f=[0 0.6 0.6 1];
m=[1 1 0 0];
b =fir2(50,f,m);
[h,w]=freqz(b,1,128);
plot(f,m,w/pi,abs(h)) % 画出幅频和相频响应图
legend('Ideal','fir2 Designed')
title('Comparison of Frequency Response Magnitudes ')
xlabel('Normalized Frequency(rad/sample)');
ylabel('magnitude')

输出的频率响应特性如图3所示:

在这里插入图片描述

图3. 频率响应特性图



END
2024年9月6日

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

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

相关文章

Django学习实战篇二(适合略有基础的新手小白学习)(从0开发项目)

前言: 从这一章开始,我们来创建项目typeidea,我把它放到了GitHub上。强烈建议你也到GitHub上注册一个账号(如果没有的话),然后创建这样的项目。当然,你也可以起一个属于自己的名称。这个项目就是…

Live800:以客户为中心,重塑服务标准

在快速迭代的商业环境中,企业若想持续繁荣,就必须不断审视并优化自身的服务模式。传统上,服务往往被视为产品交易的附加品,但今日之市场,服务已悄然成为企业核心竞争力的关键要素。因此,“以客户为中心&…

5、Django Admin后台移除“删除所选”操作

默认情况下,Django Admin后台的listview模型列表页,会有一个Delete Selected删除所选操作。假设你需要再从Hero管理模型中移除该删除操作。 ModelAdmin.get_actions方法可以返回所有的操作方法。通过覆盖此方法,移除其中delete_selected方法…

美团面试:mysql 索引失效?怎么解决? (重点知识,建议收藏,读10遍+)

美团面试:mysql 索引失效?怎么解决? 尼恩说在前面 在40岁老架构师 尼恩的读者交流群(50)中,最近有小伙伴拿到了一线互联网企业如得物、阿里、滴滴、极兔、有赞、shein 希音、shopee、百度、网易的面试资格,遇到很多很…

MacTalk 测评通义灵码,如何实现“微信表情”小功能?

作者:池建强,墨问西东创始人 前段时间,我写了篇墨问研发团队放弃 GitHub Copilot 的文章,没想到留言区一些读者推荐我们试试通义灵码,说它效果很不错。我呢,一直没腾出时间折腾。 直到月中时,…

Java之线程篇一

目录 如何理解进程? 进程和线程的区别 线程的优点 线程的缺点 线程异常 线程用途 创建线程 方法一:继承Thread类,重写run() 观察线程 小结 方法二: 实现Runnable接口,重写run() 方法三:继承Threa…

k8s之HPA实践——实现Web服务器的自动伸缩特性

文章目录 在生产环境中,总会有一些意想不到的事情发生,比如公司网站流量突然升高,此时之前创建的Pod已不足以支撑所有的访问,而运维人员也不可能24小时守着业务服务,这时就可以通过配置HPA,实现负载过高的情…

AI时代来临,AI基础数据服务行业未来发展有哪些变化

AI基础数据服务是针对人工智能(AI)领域提供的一项服务,它包括数据采集、数据清洗、信息抽取和数据标注等服务。AI基础数据服务旨在为AI算法的训练和优化提供必要的数据支持,为AI算法的性能提供保障。 标贝科技提供专业的数据采集、…

写的一致性问题之双写模式

文章目录 1、先写mysql:mysql会回滚,而redis不会回滚2、先写redis: 1、先写mysql:mysql会回滚,而redis不会回滚 写入msql成功,写入redis也成功,但是后续事务提交失败,mysql会回滚&a…

自己开发完整项目一、登录功能-04(集成jwt)

一、说明 前面文章我们写到了通过数据库查询出用户信息并返回,那么在真实的项目中呢,后端是需要给前端返回一个tocken,当前端通过登录功能认证成功之后,我们后端需要将用户信息和权限整合成一个tocken返回给前端,当前端…

硬盘数据恢复的正确姿势,这4款神器让你2024年秒变IT达人

现在,数据对我们超级关键,干啥都缺不了。但要是数据没了或者手一滑给删了,那可真够呛。甭管是点错了、电脑故障还是硬件磕了碰了,数据丢了可是大麻烦。不过幸亏科技一直在进步,硬盘数据恢复的技术也越来越厉害&#xf…

最近大模型最火的就业方向有哪些?

在2023和2024年,大语言模型的发展迎来了绝对风口,吸引了大量创业者和投资者。然而,经过一年的发展,许多公司已经销声匿迹。那么,未来大模型方向上还有哪些可以继续发展的方向呢? 基座大模型预训练 现状 - 展现出“胜…

CST软件如何仿真Total Scan方向图的

本期将介绍如何在CST软件中得到Total Scan方向图。 CASE1 首先以两个dipole天线为例,如下图所示: 我们完成这个两单元阵的仿真,可以在远场结果看到各个频点的结果如下图所示: 我们可以在combine按钮下任意合成不同幅度相位下的结…

R-Adapter:零样本模型微调新突破,提升鲁棒性与泛化能力 | ECCV 2024

大规模图像-文本预训练模型实现了零样本分类,并在不同数据分布下提供了一致的准确性。然而,这些模型在下游任务中通常需要微调优化,这会降低对于超出分布范围的数据的泛化能力,并需要大量的计算资源。论文提出新颖的Robust Adapte…

2025入局自动驾驶的秋招人,应该瞄准哪些技术方向?

2024年已过大半,9月随着开学季的来临,2025届的毕业生也纷纷踏出了秋招的第一步。 无论是在学生期间就深耕许久智驾技术、还是从其他赛道转战至智驾,自2023年末一直到今年上半年来,都一直国内智驾行业层出不穷的各种破圈动态刷屏。…

免费OCR 文字识别工具

免费:本项目所有代码开源,完全免费。 方便:解压即用,离线运行,无需网络。 高效:自带高效率的离线OCR引擎,内置多种语言识别库。 灵活:支持命令行、HTTP接口等外部调用方式。 功能…

降Compose十八掌之『羝羊触蕃』| Handle Platform Lifecycles

公众号「稀有猿诉」 原文链接 降Compose十八掌之『羝羊触蕃』| Handle Platform Lifecycles Jetpack Compose是一个独立的声明式UI框架,它并不受限于任何操作系统平台,从框架定位的角度来讲,它是跨平台的,也应该要跨平台。…

OPenCV结构分析与形状描述符(5)查找图像中的连通组件的函数connectedComponents()的使用

操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 connectedComponents 函数计算布尔图像的连通组件标签图像。 该函数接受一个具有4或8连通性的二值图像,并返回 N,即标签…

机器学习之 PCA降维

1.PCA 降维简介 主成分分析(Principal Component Analysis, PCA)是一种统计方法,用于在数据集中寻找一组线性组合的特征,这些特征被称为主成分。PCA 的目标是通过变换原始特征空间到新的特征空间,从而减少数据的维度&…

持久化分析

目录 介绍步骤WMI持久化分析注册表映像劫持IFEO持久化 介绍 1、WMI 的全称是 Windows Management Instrumentation,即 Windows 管理规范,在 Windows 操作系统中,随着 WMI 技术的引入并在之后随着时间的推移而过时,它作为一项功能…