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

26

有没有一种简单的方法在MATLAB中对数组应用低通或高通滤波器?我有些被MATLAB的强大(或数学的复杂性)所压倒,并需要一个简单的函数或一些指导,因为我无法从文档或搜索网站中找到答案。

2个回答

34

请看filter函数。

如果你只需要一个单极低通滤波器,那么它就是

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

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

以下是相应的高通滤波器:

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

如果您需要设计滤波器,并且拥有信号处理工具箱的许可证,那么有一堆函数可供使用,可以看看fvtoolfdatool


4

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

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


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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接