【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 |
窗函数法是设计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为窗的长度 |
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所示:

例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所示。

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所示:

END
2024年9月6日
相关文章:
【MATLAB】FIR滤波器的MATLAB实现
FIR滤波器的MATLAB实现 FIR滤波器的设计fir1函数fir2函数 与IIR滤波器相比,FIR滤波器既有其优势也有其局限性。FIR滤波器的主要优点包括: 精确的线性相位响应;永远保持稳定性;设计方法通常是线性的;在硬件实现中具有更…...
【RabbitMQ之一:windows环境下安装RabbitMQ】
目录 一、下载并安装Erlang1、下载Erlang2、安装Erlang3、配置环境变量4、验证erlang是否安装成功 二、下载并安装RabbitMQ1、下载RabbitMQ2、安装RabbitMQ3、配置环境变量4、验证RabbitMQ是否安装成功5、启动RabbitMQ服务(安装后服务默认自启动) 三、安…...
ISO26262和Aspice之间的关联
ASPICE 介绍: ASPICE(Automotive Software Process Improvement and Capability dEtermination)是汽车软件过程改进及能力评定的模型,它侧重于汽车软件的开发过程。ASPICE 定义了一系列的过程和活动,包括需求管理、软…...
对极约束及其性质 —— 公式详细推导
Title: 对极约束及其性质 —— 公式详细推导 文章目录 前言1. 对极约束 (Epipolar Constraint)2. 坐标转换 (Coordinate Transformations)3. 像素坐标 (Pixel Coordinates)4. 像素坐标转换 (Transformations of Pixel Coordinates)5. 本质矩阵 (Essential Matrix)6. 线坐标 (Co…...
【论文精读】SCINet-基于降采样和交互学习的时序卷积模型
《SCINet: Time Series Modeling and Forecasting with Sample Convolution and Interaction》的作者团队来自香港中文大学,发表在NeurIPS 2022会议上。 动机 该论文的出发点是观察到时间序列数据具有独特的属性:即使在将时间序列下采样成两个子序列后,时间关系(例如数据…...
深度学习与大模型第1课环境搭建
文章目录 深度学习与大模型第1课环境搭建1. 安装 Anaconda2. 修改环境变量2.1 修改 .condarc 文件2.2 使用 Anaconda Prompt 修改环境变量 3. 新建 .ipynb 文件 机器学习基础编程:常见问题: 深度学习与大模型第1课 环境搭建 1. 安装 Anaconda 首先&am…...
JDK新特性
LTS Record jdk16 不是方法 是一个定 # Sealed Class/Interface jdk17 限制只能由某些类继承 CompletableFuture jkd8 PatternMatching of instanceOf jdk16 switch expressions jdk14 Stream.collect() Collector Collector API Collector.groupBy Collector实战 1. …...
数据处理与数据填充在Pandas中的应用
在数据分析和机器学习项目中,数据处理是至关重要的一步。Pandas作为Python中用于数据分析和操作的一个强大库,提供了丰富的功能来处理和清洗数据。本文将深入探讨Pandas在数据处理,特别是数据填充方面的应用。 在实际的数据集中,…...
【百日算法计划】:每日一题,见证成长(010)
题目 合并两个排序的链表 输入两个递增排序的链表,合并这两个链表并使新链表中的节点仍然是递增排序的 示例1: 输入:1->2->4, 1->3->4 输出:1->1->2->3->4->4 思路 引入一个带虚拟头结点和tail指针的…...
【WPF】WPF学习之【二】布局学习
WPF布局学习 常用布局Grid网格布局StackPanel 布局CanvasDockPanel布局WrapPanel布局 常用布局 1、StackPanel: 学习如何使用StackPanel进行垂直和水平布局。 2、Grid: 掌握Grid的网格布局技术。 3、Canvas: 了解Canvas的绝对定位布局。 4、DockPanel: 学习DockPanel的停靠…...
KEIL中编译51程序 算法计算异常的疑问
KEIL开发 51 单片机程序 算法处理过程中遇到的问题 ...... by 矜辰所致前言 因为产品的更新换代, 把所有温湿度传感器都换成 SHT40 ,替换以前的 SHT21。在 STM32 系列产品上的替换都正常,但是在一块 51 内核的无线产品上面,数据…...
pikachu文件包含漏洞靶场
本地文件包含 1、先随意进行提交 可以得出是GET传参 可以在filename参数进行文件包含 2、准备一个2.jpg文件 内容为<?php phpinfo();?> 3、上传2.jpg文件 4、访问文件保存的路径uploads/2.jpg 5、将我们上传的文件包含进来 使用../返回上级目录 来进行包含木马文件 …...
基于DPU与SmartNIC的K8s Service解决方案
1. 方案背景 1.1. Kubernetes Service介绍 Kubernetes Service是Kubernetes中的一个核心概念,它定义了一种抽象,用于表示一组提供相同功能的Pods(容器组)的逻辑集合,并提供了一种方式让这些Pods能够被系统内的其他组…...
SLM561A系列 60V 10mA到50mA线性恒流LED驱动芯片 为智能家居照明注入新活力
SLM561A系列选型参考: SLM561A10ae-7G SOD123 SLM561A15ae-7G SOD123 SLM561A20ae-7G SOD123 SLM561A25ae-7G SOD123 SLM561A30ae-7G SOD123 SLM561A35ae-7G SOD123 SLM561A40ae-7G SOD123 SLM561A45ae-7G SOD123 SLM561A50ae-7G SOD123 …...
Requests库对session的支持
场景:如何获取登录时响应消息中的sessionid,以及如何在后续请求中把sessionid添到cookie中 Requests库提供了一个Session类,通过requests库中的session对象,requests库会自动帮我们保存服务端返回的cookie数据(set-cookie里的内容…...
利用深度学习实现验证码识别-2-使用Python导出ONNX模型并在Java中调用实现验证码识别
1. Python部分:导出ONNX模型 首先,我们需要在Python中定义并导出一个已经训练好的验证码识别模型。以下是完整的Python代码: import string import torch import torch.nn as nn import torch.nn.functional as FCHAR_SET string.digits# …...
如何通过Spring Cloud Consul增强微服务安全性和可靠性
为了增强微服务的安全性和可靠性,Spring Cloud Consul 是一个非常强大的工具。它不仅提供了服务发现和配置管理功能,还能够有效地管理微服务的安全和健康状态。本文将深入探讨如何通过 Spring Cloud Consul 来增强微服务的安全性和可靠性,主要…...
无代码搭建小程序zion
无代码搭建小程序zion 一、无代码搭建小程序zion的降低技术门槛,提升开发效率 1. 无需编程经验:Zion无代码平台通过提供直观的可视化界面和拖拽式操作,让开发者无需具备复杂的编程技能也能进行小程序的开发。这种方式大大降低了技术门槛&a…...
【南方科技大学】CS315 Computer Security 【Lab1 Packet Sniffing and Wireshark】
目录 IntroductionBackgroundTCP/IP Network StackApplication LayerTransport LayerInternet LayerLink LayerPacket Sniffer Getting WiresharkStarting WiresharkCapturing PacketsTest Run Questions for the Lab Introduction 实验的第一部分介绍数据包嗅探器 Wireshark。…...
【人工智能/机器学习/机器人】数学基础-学习笔记
函数 奇偶性: 偶函数: f ( − x ) f ( x ) f(-x)f(x) f(−x)f(x) y轴对称 f ( x ) x 2 f(x)x^2 f(x)x2 f ( − x ) ( − x ) 2 x 2 f ( x ) f(-x)(-x)^2x^2f(x) f(−x)(−x)2x2f(x) 奇函数: f ( − x ) − f ( x ) f(-…...
Python基础语法:访问器@property和修改器@xxx.setter
一、简介 访问器和修改器也是装饰器的一种。 property: 访问器,getter xxx.setter: 修改器,setter 访问器和修改器的根本目的是想将属性私有化,提供getter&setter去访问。 访问器和修改器能够做到访问属性其实在调用getter方法࿰…...
Kerberos身份认证原理与实战排错指南
1. 为什么今天还要花时间搞懂 Kerberos?——一个被低估的“老协议”正在悄悄支撑着你的日常你每天登录公司内网查邮件、访问财务系统提交报销、用 Jenkins 构建代码、甚至在 Windows 域环境中打开一台同事的共享文件夹……这些看似顺滑的操作背后,大概率…...
新手也能懂的SSRF漏洞实战:用iwebsec靶场复现文件读取与内网探测
从零开始掌握SSRF漏洞:iwebsec靶场实战指南1. 认识SSRF漏洞的本质想象一下,你正在一家高档餐厅点餐,服务员承诺可以帮你从任何地方获取食材——包括隔壁竞争对手的厨房。SSRF(Server-Side Request Forgery)漏洞就像这个…...
告别虚拟机卡顿:在Windows 11的WSL2里搞定Lichee Nano交叉编译环境
告别虚拟机卡顿:在Windows 11的WSL2里搞定Lichee Nano交叉编译环境 对于嵌入式开发者来说,配置开发环境往往是个令人头疼的问题。传统虚拟机方案虽然能提供完整的Linux体验,但资源占用高、启动慢、与宿主系统交互不便等问题一直困扰着开发者。…...
【与我学 ClaudeCode】协作篇 之 Worktree + Task Isolation :目录隔离的并行执行通道
作者:逆境不可逃 技术永无止境 希望我的内容可以帮助到你!!!! 大家吼 ! 我是 逆境不可逃 今天给大家带来文章《【与我学 ClaudeCode】协作篇 之 Worktree Task Isolation :目录隔离的并行执行通道》. Le…...
Unity事件系统实战:用事件驱动重构你的金币拾取逻辑(告别硬编码)
Unity事件系统实战:用事件驱动重构你的金币拾取逻辑(告别硬编码)在游戏开发中,我们经常会遇到这样的场景:玩家拾取金币后,需要更新UI、播放音效、解锁成就、保存数据……如果把这些逻辑全部写在金币拾取的代…...
十年以上经验的建站公司推荐|策划强、落地稳的网站制作公司盘点
互联网时代,企业官网已从单纯的信息展示窗口升级为集品牌价值传递、用户体验连接与业务高效转化于一体的核心数字阵地。行业报告显示,优质官网可帮助企业线上转化率提升35%-60%,而低效官网则可能导致潜在客户大量流失。面对市场上众多的网站建…...
输电线路在线监测系统|架空线路安全运行的“第一道防线“!
输电线路微气象监测站是专为高压输电线路、电网廊道、杆塔运维量身打造的专利级一体化微气象智能监测设备。依托双专利超声波探测技术、六要素集成传感架构、无启动风速高精测量、智能抗干扰稳控系统,实现输电线路沿线气象24小时全自动捕捉、动态实时监测、大风风险…...
鼎讯AM-601光纤熔接机:交通通信建设与维护的可靠伙伴
在铁路、高速公路等交通基础设施的智能化建设中,稳定高效的光纤网络是指挥调度、安全监控等核心系统运行的生命线。鼎讯AM-601光纤熔接机,作为一款专为严苛环境设计的六马达便携式熔接设备,正成为保障这些关键通信链路畅通无阻的可靠选择。无…...
TorchEasyRec:阿里巴巴开源的推荐系统深度学习框架详解
第一部分:项目概览与核心功能 一、项目简介:什么是 TorchEasyRec? TorchEasyRec 是阿里巴巴 PAI 团队开发的基于 PyTorch 的推荐系统框架,专门用于构建生产级别的深度学习推荐模型。简单来说,它就是一个让你能够快速…...
