如何对 Matlab 中的数组应用低通或高通滤波器?

Posted

技术标签:

【中文标题】如何对 Matlab 中的数组应用低通或高通滤波器?【英文标题】:How to apply a low-pass or high-pass filter to an array in Matlab? 【发布时间】:2010-12-19 12:15:36 【问题描述】:

是否有一种简单的方法可以将低通或高通滤波器应用于 MATLAB 中的数组?我对 MATLAB 的强大功能(或数学的复杂性?)有点不知所措,需要一个简单的函数或一些指导,因为我无法从文档或搜索网络中弄清楚。

【问题讨论】:

【参考方案1】:

查看filter 函数。

如果您只需要一个 1 极点低通滤波器,那就是

xfilt = filter(a, [1 a-1], x);

其中 a = T/τ,T = 采样之间的时间,τ (tau) 是滤波器时间常数。

下面是对应的高通滤波器:

xfilt = filter([1-a a-1],[1 a-1], x);

如果您需要设计一个滤波器,并拥有 Signal Processing Toolbox 的许可证,有 a bunch of functions,请查看 fvtool 和 fdatool。

【讨论】:

【参考方案2】:

您可以在运行时使用butter() 函数设计一个低通巴特沃斯滤波器,然后将其应用于信号。

fc = 300; % Cut off frequency
fs = 1000; % Sampling rate

[b,a] = butter(6,fc/(fs/2)); % Butterworth filter of order 6
x = filter(b,a,signal); % Will be the filtered signal

使用这种方法也可以使用高通和带通滤波器。见https://www.mathworks.com/help/signal/ref/butter.html

【讨论】:

警告。这需要信号处理工具箱。

以上是关于如何对 Matlab 中的数组应用低通或高通滤波器?的主要内容,如果未能解决你的问题,请参考以下文章