滤波器实现

news2025/1/11 21:04:14

滤波器实现

卷积和滤波

        滤波的数学基础是卷积。对于有限冲激响应 (FIR) 滤波器,滤波运算的输出 y(k) 是输入信号 x(k) 与冲激响应 h(k) 的卷积:

y(k)=∞∑l=−∞h(l) x(k−l).

       如果输入信号也是有限长度的,您可以使用 MATLAB® conv 函数来执行滤波运算。例如,要用三阶平均值滤波器对包含五个样本的随机向量进行滤波,可以将 x(k) 存储在向量 x 中,将 h(k) 存储在向量 h 中,并求这两个向量的卷积:

x = randn(5,1);
h = [1 1 1 1]/4;   % A third-order filter has length 4
y = conv(h,x)
y =
   -0.3375
    0.4213
    0.6026
    0.5868
    1.1030
    0.3443
    0.1629
    0.1787

y 的长度比 x 和 h 的长度之和小 1。

滤波器和传递函数

       滤波器的传递函数是其冲激响应的 Z 变换。对于 FIR 滤波器,输出 y 的 Z 变换 Y(z) 是传递函数和输入 x 的 Z 变换 X(z) 的乘积:

Y(z)=H(z)X(z)=(h(1)+h(2)z−1+⋯+h(n+1)z−n)X(z).

多项式系数 h(1), h(2), …, h(n + 1) 对应于第 n 阶滤波器的冲激响应的系数。

注意

滤波器系数索引从 1 到 (n + 1),而不是从 0 到 n。这反映了用于 MATLAB 向量的标准索引方案。

FIR 滤波器也称为全零、非递归或移动平均值 (MA) 滤波器。

对于无限冲激响应 (IIR) 滤波器,传递函数不是多项式,而是有理函数。输入和输出信号的 Z 变换的关系是:

Y(z) = H(z)X(z) = b(1)+b(2)z−1+...+b(n+1)z−na(1)+a(2)z−1+...+a(m+1)z−mX(z),

其中 b(i) 和 a(i) 是滤波器系数。在本例中,滤波器的阶是 n 和 m 的最大值。n = 0 的 IIR 滤波器也称为全极点、递归或自回归 (AR) 滤波器。n 和 m 均大于零的 IIR 滤波器也称为零极点、递归或自回归移动平均值 (ARMA) 滤波器。缩写 AR、MA 和 ARMA 通常应用于与滤波随机过程相关联的滤波器。

使用 filter 函数进行滤波

对于 IIR 滤波器,滤波运算不能用简单的卷积来说明,而需要用可从传递函数关系中找到的差分方程来说明。假设 a(1) = 1,将分母移到左侧,并进行逆 Z 变换,以获得

y(k)+a(2) y(k−1)+…+a(m+1) y(k−m)=b(1) x(k)+b(2) x(k−1)+⋯+b(n+1) x(k−n).

对于当前输入、过去的输入以及过去的输出,y(k) 是

y(k)=b(1) x(k)+b(2) x(k−1)+⋯+b(n+1) x(k−n)−a(2) y(k−1)−⋯−a(m+1) y(k−m),

这是数字滤波器的标准时域表示。从 y(1) 开始,假设一个初始条件为零的因果系统,表示等效于

y(1)=b(1) x(1)y(2)=b(1) x(2)+b(2) x(1)−a(2) y(1)y(3)=b(1) x(3)+b(2) x(2)+b(3) x(1)−a(2) y(2)−a(3) y(1)  ⋮   y(n)=b(1) x(n)+⋯+b(n) x(1)−a(2) y(n−1)−⋯−a(n) y(1).

要实现此滤波运算,您可以使用 MATLAB filter 函数。filter 将系数存储在两个行向量中,其中一个为分子,一个为分母。例如,要求解差分方程

y(n)−0.9y(n−1)=x(n) ⇒ Y(z)=11−0.9 z−1X(z)=H(z) X(z),

,您可以使用

b = 1;
a = [1 -0.9];
y = filter(b,a,x);

filter 提供的输出样本的数量与输入样本一样多,即 y 的长度与 x 的长度相同。如果 a 的第一个元素不是 1,则 filter 在实现差分方程之前,将系数除以 a(1)。

另请参阅

App

  • 滤波器设计工具

函数

  • conv | designfilt | filter

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

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

相关文章

java项目之高校奖学金管理系统(ssm框架+源码+文档)

风定落花生,歌声逐流水,大家好我是风歌,混迹在java圈的辛苦码农。今天要和大家聊的是一款基于springboot的高校奖学金管理系统。项目源码以及部署相关请联系风歌,文末附上联系信息 。 项目简介: 管理员:首…

es6过滤对象里面指定的不要的值filter过滤

//过滤出需要的值this.dataItemTypeSelectOption response.data.filter(ele > ele.dictValue tree||ele.dictValue float4);//过滤不需要的值this.dataItemTypeSelectOption response.data.filter((item) > {return item.dictValue ! "float4"&&it…

Hbase 迁移小结:从实践中总结出的最佳迁移策略

在数据存储和处理领域,HBase作为一种分布式、可扩展的NoSQL数据库,被广泛应用于大规模数据的存储和分析。然而,随着业务需求的变化和技术发展的进步,有时候我们需要将现有的HBase数据迁移到其他环境或存储系统。HBase数据迁移是一…

观点|周鸿祎:大模型真正的竞争在于使其与用户场景相结合

【网易科技11月9日报道】目前,人工智能技术尚未达到向手机一样的刚性、高频需求,各国和企业都在加大研发和应用力度,探索不同的技术路线和商业模式。 360集团创始人、董事长周鸿祎在2023世界互联网大会乌镇峰会上表示,目前人工智能…

文件扩展名批量修改:txt文件扩展名批量修改为doc文档,高效办公的方法

在我们的日常工作中,经常需要处理大量的文本文件,这些文件可能以.txt为扩展名,而我们需要将其修改为.doc扩展名以方便进一步的操作。这种情况下,我们引用云炫文件管理器来将扩展名批量修改,提升办公的效率。在进行文件…

【数据结构】堆详解!(图解+源码)

🎥 屿小夏 : 个人主页 🔥个人专栏 : 数据结构解析 🌄 莫道桑榆晚,为霞尚满天! 文章目录 🌤️前言🌤️堆的理论☁️二叉树的顺序存储☁️堆的概念 🌤️堆的实现…

Android 进阶——Binder IPC之学习Binder IPC架构及原理概述(十二)

文章大纲 引言一、Binder IPC 基础架构1、Binder IPC核心角色2、Binder IPC的数据流 二、Binder IPC 协议通信流程三、Binder IPC 核心角色详解1、Server 进程及Server 组件2、Client进程及Client组件3、Service Manager 与实名 Binder4、Binder 驱动 四、Binder 通信过程五、开…

解锁潜在商机的钥匙——客户管理系统公海池

在竞争激烈的市场环境下,企业需要更智能、高效的方式管理客户,从而挖掘潜在商机。客户管理系统的公海池,就是为此而生的利器,让你轻松解锁商机,提升客户管理效能。 公海池,打破信息孤岛,释放潜在…

树之二叉排序树(二叉搜索树)

什么是排序树 说一下普通二叉树可不是左小右大的 插入的新节点是以叶子形式进行插入的 二叉排序树的中序遍历结果是一个升序的序列 下面是两个典型的二叉排序树 二叉排序树的操作 构造树的过程即是对无序序列进行排序的过程。 存储结构 通常采用二叉链表作为存储结构 不能 …

一致性算法介绍(二)

1.4. NWR N :在分布式存储系统中,有 多少份备份数据 W :代表一次成功的更新操作要求至少有 w 份数据写入成功 R : 代表一次成功的读数据操作要求至少有 R 份数据成功读取 NWR值的不同组合会产生不同的一致性效果,当WR…

【LeetCode刷题笔记】堆和优先级队列

358. K 距离间隔重排字符串 解题思路: 大根堆 + 队列 , 1)首先 计数数组 统计 每个字符出现的次数 ,然后将 计数 > 0 的 字符 和 次数 一起放入 大根堆 ,大根堆中

docker创建并访问本地前端

docker创建并访问本地前端,直接上命令: 安装nginx镜像: docker pull nginx 查看已安装的nginx: docker images 创建DockerFile文件,直接在当前文件夹种创建 touch Dockerfile 在Dockerfile写入内容: F…

HHDESK端口转发监控服务

端口转发是一种网络技术,用于将外部网络请求转发到内部网络中的特定设备或服务。它允许通过公共网络访问内部网络中的资源,提供了灵活性和便利性。 传统的端口转发方式是通过配置路由器的端口映射,但这需要具备网络知识和一定的技术操作&…

操作系统 | 编写内核

🌈个人主页:Sarapines Programmer🔥 系列专栏:《操作系统实验室》🔖少年有梦不应止于心动,更要付诸行动。 目录结构 1. 操作系统实验之编写内核 1.1 实验目的 1.2 实验内容 1.3 实验步骤 1.4 实验过程 …

Git系列之Git集成开发工具及git扩展使用

🎉🎉欢迎来到我的CSDN主页!🎉🎉 🏅我是君易--鑨,一个在CSDN分享笔记的博主。📚📚 🌟推荐给大家我的博客专栏《Git实战开发》。🎯🎯 &a…

MATLAB中deconvwnr函数用法

目录 语法 说明 示例 使用 Wiener 滤波对图像进行去模糊处理 deconvwnr函数的功能是使用 Wiener 滤波对图像进行去模糊处理。 语法 J deconvwnr(I,psf,nsr) J deconvwnr(I,psf,ncorr,icorr) J deconvwnr(I,psf) 说明 J deconvwnr(I,psf,nsr) 使用 Wiener 滤波算法对…

Clickhouse SQL

insert insert操作和mysql一致 标准语法:insert into [table_name] values(…),(….)从表到表的插入:insert into [table_name] select a,b,c from [table_name_2] update 和 delete ClickHouse 提供了 Delete 和 Update 的能力,这类操作…

深入理解 TCP;场景复现,掌握鲜为人知的细节

握手失败 第一次握手丢失了,会发生什么? 当客户端想和服务端建立 TCP 连接的时候,首先第一个发的就是 SYN 报文,然后进入到 SYN_SENT 状态。 在这之后,如果客户端迟迟收不到服务端的 SYN-ACK 报文(第二次…

管易云与电商平台的无代码集成:实现API连接与用户运营

管易云简介及其与电商平台的合作 金蝶管易云是金蝶集团旗下以电商为核心业务的子公司,是国内最早的电商ERP服务商之一,总部在上海,与淘宝、天猫、 京东、拼多多、抖音等300多家主流电商平台建立合作关系,同时管易云是互联网平台首…

python注释(快捷键)

首先介绍以下三种注释方式: # 123(单行注释) """123"""(多行注释) 123(多行注释) 下面介绍一下快捷键: Ctrl/ 注释单行:指针只要在这行代…