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