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

时间:2009-11-23 14:58:11

标签: matlab filter signal-processing

在MATLAB中有一种简单的方法将低通或高通滤波器应用于数组吗?我对MATLAB的力量(或数学的复杂性?)有点不知所措,需要一个简单的功能或一些指导,因为我无法从文档或搜索网络中找到它。

2 个答案:

答案 0 :(得分:33)

查看filter函数。

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

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

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

这是相应的高通滤波器:

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

如果您需要设计过滤器并拥有信号处理工具箱的许可证,请a bunch of functions,请查看fvtoolfdatool

答案 1 :(得分:4)

您可以使用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