matlab过滤器执行时间

时间:2016-08-02 08:48:12

标签: matlab filter parallel-processing

我需要过滤6个信号,每个信号有60000000个样本。因此数据保存在矩阵数据中(60000000,6)。有几种方法可以做到这一点:

data=randn(60000000,6);
b=ones(1,1000)/1000;

tic
R=filter(b,1,data);
toc

tic
for i=1:6
    R2(:,i)=filter(b,1,data(:,i));
end
toc

tic
parfor i=1:6
    R2(:,i)=filter(b,1,data(:,i));
end
toc

通过文档建议使用第一种形式作为最快的形式,但在我的情况下它是最慢的。

Elapsed time is 172.235919 seconds.
Elapsed time is 45.354810 seconds.
Elapsed time is 59.250638 seconds.

在进程资源管理器中,第一种形式只使用1个CPU线程。通过文档,它应该默认在多个线程上运行。你遇到过同样的问题吗?

0 个答案:

没有答案