【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(-…...
XML Group端口详解
在XML数据映射过程中,经常需要对数据进行分组聚合操作。例如,当处理包含多个物料明细的XML文件时,可能需要将相同物料号的明细归为一组,或对相同物料号的数量进行求和计算。传统实现方式通常需要编写脚本代码,增加了开…...
多云管理“拦路虎”:深入解析网络互联、身份同步与成本可视化的技术复杂度
一、引言:多云环境的技术复杂性本质 企业采用多云策略已从技术选型升维至生存刚需。当业务系统分散部署在多个云平台时,基础设施的技术债呈现指数级积累。网络连接、身份认证、成本管理这三大核心挑战相互嵌套:跨云网络构建数据…...
在软件开发中正确使用MySQL日期时间类型的深度解析
在日常软件开发场景中,时间信息的存储是底层且核心的需求。从金融交易的精确记账时间、用户操作的行为日志,到供应链系统的物流节点时间戳,时间数据的准确性直接决定业务逻辑的可靠性。MySQL作为主流关系型数据库,其日期时间类型的…...
Golang 面试经典题:map 的 key 可以是什么类型?哪些不可以?
Golang 面试经典题:map 的 key 可以是什么类型?哪些不可以? 在 Golang 的面试中,map 类型的使用是一个常见的考点,其中对 key 类型的合法性 是一道常被提及的基础却很容易被忽视的问题。本文将带你深入理解 Golang 中…...
边缘计算医疗风险自查APP开发方案
核心目标:在便携设备(智能手表/家用检测仪)部署轻量化疾病预测模型,实现低延迟、隐私安全的实时健康风险评估。 一、技术架构设计 #mermaid-svg-iuNaeeLK2YoFKfao {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg…...
在rocky linux 9.5上在线安装 docker
前面是指南,后面是日志 sudo dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo sudo dnf install docker-ce docker-ce-cli containerd.io -y docker version sudo systemctl start docker sudo systemctl status docker …...
Opencv中的addweighted函数
一.addweighted函数作用 addweighted()是OpenCV库中用于图像处理的函数,主要功能是将两个输入图像(尺寸和类型相同)按照指定的权重进行加权叠加(图像融合),并添加一个标量值&#x…...
【算法训练营Day07】字符串part1
文章目录 反转字符串反转字符串II替换数字 反转字符串 题目链接:344. 反转字符串 双指针法,两个指针的元素直接调转即可 class Solution {public void reverseString(char[] s) {int head 0;int end s.length - 1;while(head < end) {char temp …...
Keil 中设置 STM32 Flash 和 RAM 地址详解
文章目录 Keil 中设置 STM32 Flash 和 RAM 地址详解一、Flash 和 RAM 配置界面(Target 选项卡)1. IROM1(用于配置 Flash)2. IRAM1(用于配置 RAM)二、链接器设置界面(Linker 选项卡)1. 勾选“Use Memory Layout from Target Dialog”2. 查看链接器参数(如果没有勾选上面…...
Springcloud:Eureka 高可用集群搭建实战(服务注册与发现的底层原理与避坑指南)
引言:为什么 Eureka 依然是存量系统的核心? 尽管 Nacos 等新注册中心崛起,但金融、电力等保守行业仍有大量系统运行在 Eureka 上。理解其高可用设计与自我保护机制,是保障分布式系统稳定的必修课。本文将手把手带你搭建生产级 Eur…...
