matlab实现低通、高通、带通、带阻滤波

article/2025/10/22 18:32:42

MATLAB滤波常用函数

模拟滤波器阶数选择函数

buttord

功能:计算butterworth模拟滤波器的阶数
调用格式:

[n,Wn]=buttord(Wp,Ws,Rp,Rs,'s');
% 参数中的n是求出模拟滤波器最小的阶数,Wn是等效低通滤波器的截止频率;Wp和Ws分别是通带和阻带的频率(截止频率)。当Wp>Ws时,为高通滤波器,当Wp和Ws为二元矢量时,为带通或带阻滤波器,这时求出的Wn也是二元矢量。
%此处buttord可替换为 cheb1ord,cheb2ord,ellipord函数,相应为切比雪夫I型,切比雪夫II型,椭圆滤波器。

butter

功能:butterworth模拟滤波器的设计
调用格式:

[b,a]=butter(n,Wn,'s');
[b,a]=butter(n,Wn,'ftype','s')
%此处buttord可替换为 cheb1ord,cheb2ord,ellipord函数,相应为切比雪夫I型,切比雪夫II型,椭圆滤波器。%当Wn=[W1 W2](W1<W2)时,表示设计一个带通滤波器,函数将产生一个2n阶的数字带通滤波器,其通带频率为W1<w<W2。
% 当带有参数'ftype'时,表示可设计出高通或带阻滤波器。
% 当ftype=high时,设计出截止频率为Wn的高通滤波器。
%当ftype=stop时,设计出带阻滤波器,这时Wn=[W1 W2],且阻带频率为W1<w<W2。

一、带通滤波

例1

对信号data实现20-350Hz的带通滤波,信号data的采样频率为Fs,代码如下:

fp1=[50,300];fs1=[20, 350];
Fs2=Fs/2;
Wp=fp1/Fs2; Ws=fs1/Fs2;
Rp=1; Rs=30;
[n,Wn]=cheb2ord(Wp,Ws,Rp,Rs);
[b1,a1]=cheby2(n,Rs,Wn);
y=filter(b1,a1,data);%经过filter滤波之后得到的数据y则是经过带通滤波后的信号数据

这里需要解释一个问题,为何需要将通带和阻带除以采样频率的一半Fs2呢?
我们都知道一句话,叫做时域采样,频域延拓。频域的延拓主要是以周期为 2 π 2\pi 2π进行延拓。也即意味着,经过离散时间傅里叶变换DTFT后,在频域是以 2 π 2\pi 2π为周期的。具体参考这篇文章时域采样与频域延拓。因此,我们的滤波器实际是这样的
在这里插入图片描述
a,b,c,d分别表示低通滤波、高通滤波、带通滤波、带阻滤波。因此,我们所定义的通带和阻带频率需要进行归一化到 π \pi π。我们知道,采样周期 F s Fs Fs对应的频率周期为 2 π 2\pi 2π,因此要归一化到 π \pi π,则需要除以采样频率的一半。

额外说明

评论区有人问其中的 R p R_{p} Rp R s R_{s} Rs是什么,这里解释一下,分别代表通带起伏和阻带衰减。理想状态下,我们可以得到例如说50Hz的高通滤波器,如上图(b)所示。但在实际过程中, w c − ∞ w_{c}-\infin wc这段频率带范围内幅频响应不可能是一条平坦的直线,会像波浪线一样起伏变化。因此 R p R_{p} Rp代表的是通带起伏,用来反映起伏程度如何。 R p R_{p} Rp越大,起伏程度越高。 R s R_{s} Rs则是代表阻带衰减的幅度大小。这里用个类似的图来说明一下。
在这里插入图片描述
图片中的波纹线反映了通带起伏。

二、带阻滤波

例2

对信号data实现50Hz带阻滤波

fp1=[10,250];fs1=[49, 51];
Fs2=Fs/2;
Wp=fp1/Fs2; Ws=fs1/Fs2;
Rp=1; Rs=30;
[n,Wn]=cheb2ord(Wp,Ws,Rp,Rs);
[b2,a2]=cheby2(n,Rs,'stop');
y=filter(b2,a2,data);%经过filter滤波之后得到的数据y则是经过带通滤波后的信号数据

低通

例3

对信号data实现20Hz的低通滤波

fp1=10;fs=30;
Fs2=Fs/2;
Wp=fp1/Fs2; Ws=fs1/Fs2;
Rp=1; Rs=30;
[n,Wn]=buttord(Wp,Ws,Rp,Rs);
[b2,a2]=butter(n,Wn,'s'');
y=filter(b2,a2,data);%经过filter滤波之后得到的数据y则是经过带通滤波后的信号数据

高通

例4

对信号data实现100Hz的高通滤波

fp1=90;fs1=110;
Fs2=Fs/2;
Wp=fp1/Fs2; Ws=fs1/Fs2;
Rp=1; Rs=30;
[n,Wn]=buttord(Wp,Ws,Rp,Rs);
[b2,a2]=butter(n,Wn,'high','s');
y=filter(b2,a2,data);%经过filter滤波之后得到的数据y则是经过带通滤波后的信号数据

一些经验

实际过程中,实际设计过程中更常用的形式是

[b,a]=butter(n,Wn,ftype); %ftype可以为low,high,bandpass,stop

这个时候,通带起伏和阻带衰减被设定为默认值,n为滤波器阶数,根据自己经验进行设定。如果为bandpassstop的话,滤波器的阶数则为2n。一般来说,阶数越高,在过渡带内衰减的就越快。上述[n,Wn]=buttord(Wp,Ws,Rp,Rs);中返回的是最低截止频率。可以先用buttord函数简答试下,然后取一个较为满意的阶数即可。例如,假如采样频率为1000Hz,要设计一个4阶、50Hz的高通滤波器,可以这样实现

Fs=1000;
Fs2=Fs/2;
[b,a]=butter(4,50/Fs2,'high');

参考资料

1、《学以致用 深入浅出数字信号处理》 江志宏


http://chatgpt.dhexx.cn/article/68su0xns.shtml

相关文章

matlab制作数字滤波器(带通滤波器)

一、目的 使用matlab中自带的工具fdatool制作带通滤波器&#xff0c;对数据进行滤波。 二、过程 如图&#xff0c;使用该工具制作了一个带通滤波器&#xff0c;频率为130-180Hz&#xff0c;使用汉明窗截短&#xff0c;滤波器的阶数为250。 滤波器的冲击响应如下图 将生成的滤…

matlab实现带通滤波

以带通滤波器——巴特沃斯滤波器为例 matlab给出的代码如下&#xff1a;[n,Wn] buttord(Wp,Ws,Rp,Rs) 首先要先理解一个带通滤波器的幅频特性图中&#xff0c;分为通带、阻带、过渡带三大部分。 通带截止频率和阻带截止频率对这三部分进行划分&#xff0c;二者之间的部分即…

PTAM算法流程介绍

相关工作&#xff1a;1、摄像机校正 2、特征提取&#xff08;FAST角点特征、扭曲图像的直线特征优化&#xff09; 3、极线几何与极线搜索 4、RANSAC&#xff08;随机采样一致&#xff09;及N点算法&#xff08;主要围绕5点算法&#xff09; 5、Bundle Adjustment&#xff08;光…

智能优化算法、智能控制算法、多目标优化、MPPT、无功优化

一、主题 matlab&#xff0c;python等智能优化算法、智能控制算法、多目标优化、MPPT、无功优化、机器学习类程序&#xff0c;可提供指导。 二、主要领域 开关电源、最大功率点跟踪&#xff08;恒电压法、电导增量法、爬山法、智能算法等&#xff09;、并网逆变器控制、多目…

【图】普利姆算法(prim算法)基本思想

一、prim算法基本思想&#xff1a; 假设G&#xff1d;(V&#xff0c;E)是连通的&#xff0c;TE是G上最小生成树中边的集合。算法从U&#xff1d;{u0}&#xff08;u0∈V&#xff09;、TE&#xff1d;{}开始。重复执行下列操作&#xff1a; 在所有u∈U&#xff0c;v∈V&#xf…

MP算法与OMP算法讲解一

版权声明&#xff1a;本文为博主原创文章&#xff0c;遵循 CC 4.0 BY-SA 版权协议&#xff0c;转载请附上原文出处链接和本声明。 本文链接&#xff1a; https://blog.csdn.net/ice110956/article/details/18403789 稀疏编码的一般最优化公式为&#xff1a; 其中的零范数为非…

MP算法和OMP算法介绍

正交匹配追踪算法是90年代初提出来的,主要目的是将信号在完备的字典库上进行稀疏分解。 1. 信号的稀疏表示(sparse representation of signals) 预设一个过完备字典矩阵,矩阵每列表示一种原型信号的原子。可将一个信号y表示成这些原子的稀疏线性组合。即 y = Dx ,或者…

单相/三相光伏发电并网/离网simlink仿真(MPPT)或是大功率VSC 最大功率点追踪算法(MPPT)仿真模型

单相/三相光伏发电并网/离网simlink仿真&#xff08;MPPT&#xff09;或是大功率VSC 最大功率点追踪算法&#xff08;MPPT&#xff09;仿真模型&#xff0c; 有基于扰动观察法&#xff08;P&O&#xff09;&#xff0c;恒压算法&#xff0c;电导增量法&#xff0c;变步长扰动…

光伏逆变simlink仿真(MPPT) 最大功率点追踪算法(MPPT)仿真模型,本设计基于扰动观察法

光伏逆变simlink仿真&#xff08;MPPT&#xff09; 最大功率点追踪算法&#xff08;MPPT&#xff09;仿真模型&#xff0c;本设计基于扰动观察法&#xff08;P&O&#xff09;最大功率点跟踪算法追踪光伏电池的发电曲线&#xff0c;实现最大功率点追踪输出的仿真模型。 目前…

Matlab|基于粒子群优化算法及鲁棒MPPT控制器提高光伏并网的效率

&#x1f4cb;&#x1f4cb;&#x1f4cb;本文目录如下&#xff1a;⛳️⛳️⛳️ 目录 1 光伏特性 2 动机 3 基于粒子群优化的MPPT算法 4 运行结果 5 结论 6 Simulink&Matlab代码实现 1 光伏特性 光伏电池特性是非线性的&#xff0c;其输出功率随辐照度和温度的变化而变化。…

OMP与MP算法流程与代码

目录 1. 算法描述2. 部分公式推导3. 算法代码3.1 OMP算法代码3.2 MP算法代码 4. 例子 本文算法描述主要来自下面书籍的3.1节。 [1] 【以色列】Michael Elad著. 曹铁勇等翻.《稀疏与冗余表示–理论及其在信号与图像处理中的应用》.国防工业出版社. 2015. 1. 算法描述 (1) 任务&a…

并行计算(MPI + OpenMP)

文章目录 并行计算MPI&#xff08;进程级并行&#xff09;基本结构数据类型点对点通信阻塞非阻塞非连续数据打包 聚合通信Communicator & Cartisen Grid OpenMP&#xff08;线程级并行&#xff09;简介基本制导语句worksharing constructSectionsSingleFor 临界区 & 原…

算法5:普里姆算法

目录 1. 应用场景-修路问题2. 最小生成树3. 普里姆算法介绍4. 代码实现 1. 应用场景-修路问题 有7个村庄(A, B, C, D, E, F, G) &#xff0c;现在需要修路把7个村庄连通各个村庄的距离用边线表示(权) &#xff0c;比如 A – B 距离 5公里问&#xff1a;如何修路保证各个村庄都能…

使用粒子群PSO算法实现MPPT-M语言仿真

在Octave以及Matlab上&#xff0c;仿真了使用粒子群PSO实现MPPT的过程。粒子数为4。太阳能电池为4个串联。 2019年4月24日更新matlab代码。 目录 1.1 先绘制出PV曲线&#xff08;Octave&#xff09; 1.2 PSO算法&#xff08;Octave&#xff09; 2.1 绘制PV曲线&#xff08…

MPP概述

什么是MPP MPP (Massively Parallel Processing)&#xff0c;即大规模并行处理&#xff0c;在数据库非共享集群&#xff08;传统的单节点不属于集群&#xff0c;双机热备或Oracle RAC等&#xff0c;均是基于共享存储的&#xff09;中&#xff0c;每个节点都有独立的磁盘存储系…

粒子群算法(PSO)光伏发电 MPPT实现多峰值寻优,阴影遮蔽光伏发电算法 使用s函数编写粒子群算法,阴影遮蔽,实现多峰值寻优

粒子群算法&#xff08;PSO&#xff09;光伏发电 MPPT实现多峰值寻优&#xff0c;阴影遮蔽光伏发电算法 使用s函数编写粒子群算法&#xff0c;阴影遮蔽&#xff0c;实现多峰值寻优&#xff0c;解决经典mppt算法会形成局部最优的问题&#xff0c;追踪到最大峰值功率输出。 粒子群…

基于PSO粒子群算法的MPPT最大功率跟踪Simulink仿真,PSO采用S函数实现

目录 1.算法描述 2.仿真效果预览 3.MATLAB核心程序 4.完整MATLAB 1.算法描述 MPPT控制器的全称是“最大功率点跟踪”&#xff08;Maximum Power Point Tracking&#xff09;太阳能控制器&#xff0c;是传统太阳能充放电控制器的升级换代产品。MPPT控制器能够实时侦测太阳能…

理解MP算法

转载&#xff1a;http://blog.csdn.net/u010103202/article/details/50932936 2&#xff0e;MP算法 作为一类贪婪算法&#xff0c;MP算法的基本思路是在迭代中不断找寻最有测量矩阵列来逼近被表示向量&#xff0c;继而寻得最优的稀疏逼近&#xff0c;使得x与y的残差最小。对于…

matlab simulink光伏发电系统MPPT算法

1、内容简介 略 553-可以交流、咨询、答疑 2、内容说明 世界各国能源需求的不断增长&#xff0c;以及传统能源资源的消耗和对环境的不良影 响&#xff0c;促使社会寻找替代能源。因此光伏发电成为研究热点之一&#xff0c;在对光伏电池的 研究中最大功率点追踪 (Maximum Pow…

MP算法与OMP算法

稀疏编码的一般最优化公式为&#xff1a; 其中的零范数为非凸优化。那么如何解这么一个非凸优化问题呢&#xff1f;其中一个常用的解法就是MP算法。 MP算法 MP算法是一种贪心算法&#xff08;greedy&#xff09;&#xff0c;每次迭代选取与当前样本残差最接近的原子&#xff0…