我通过运行以下脚本来比较Matlab函数conv
和filter
的运行时间:
function speed()
% not needed
%a = 0
%wake up CPU
%for j =1:100
% a= a+1; %matlab does not allow a+=1
%end
N = [100 1000 1000 5000]*15;
speedc = [];
speedf = [];
for n = N
a = rand(1,n);
b = rand(1,n+10);
tic
conv(a,b);
speedc = [speedc toc];
tic
filter(a,1,b);
speedf = [speedf toc];
end
disp(speedf./speedc)
通过输出我得到:
0.32581 0.50001 0.50084 0.50077
我们看到,filter函数的速度几乎是conv函数的两倍。为什么会这样?
编辑: “唤醒CPU”部分使用八度特定语法。我更改了它,使其可以在matlab中运行。我们在没有第一个循环的情况下运行了Matlab中的Windows 7计算机。该版本对我来说是未知的。