скорость конв против фильтра в Matlab - PullRequest
0 голосов
/ 18 декабря 2018

Я сравниваю время выполнения функций 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.Версия мне неизвестна.

...