Я сравниваю время выполнения функций 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
Мы видим, что функция фильтра почти в два раза быстрее, чем функция conv.Почему это так?
Редактировать: часть "пробуждение ЦП" использует синтаксис, специфичный для октавы.Я изменил его, чтобы он мог работать в Matlab.Мы запустили его без первого цикла машины Windows 7 в Matlab.Версия мне неизвестна.