【发布时间】:2017-11-13 13:12:18
【问题描述】:
我是 MATLAB 的新手,还不知道它的功能和编程方式。
我有一个 3D 矩阵:19*1000*134,其中包含我想用巴特沃思过滤的数据。 我做了一个双循环的代码,效果很好:
%% Filtering
w1 = 1/(fs/2);
w2 = 45/(fs/2);
[b, a] = butter(6, [w1 w2], 'bandpass');
for i=1:channel
for j=1:nb_epoch
Data_filtered(i,:,j) = filtfilt(b, a, s_EEG.data(i,:,j));
end
end
有没有其他方法可以更好地做同样的事情?由于我不了解 MATLAB,因此我不确定这是实现此带通滤波器的最佳方式。
谢谢!
【问题讨论】:
-
这听起来很对。
-
FEX 有一个FiltFiltM 函数。优点是,它能够沿某个维度处理矩阵。但是我不确定这会快多少
-
仅供参考,下面选择的答案不会按书面形式运行。不允许运行嵌套的
parfor循环。 -
是的,它被注意到了。我只用过一个,挺好看的。谢谢大家!