犰狳代码与MATLAB代码相同,但速度要慢得多

时间:2018-04-16 17:01:15

标签: c++ matlab matrix armadillo

最近我需要将matlab代码转换为c ++。它包括矩阵运算所以我使用Armadillo。但事实证明Armadillo慢得多,我想知道为什么。 这是matlab代码:

for j=1:sample
    for i=1:length(t)
        k=[1:1:N0];
        AA=sqrt(2*k*dw).*(cos(dw.*k*i*dt).*Xk(j,k)+sin(dw.*k*i*dt).*Yk(j,k));
        Ag2(i)=sum(AA); 
    end
    Ag(j,:)=Ag2.*gt;
end

这是犰狳代码:

for (int j = 0; j < sample; j++){
        for (int i = 0; i < t.n_cols; i++){
            AA = sqrt(2 * k * dw)
                % (cos(dw * k * (i + 1) * dt) % Xk.row(j) + sin(dw * k * (i + 1) * dt) % Yk.row(j));
            Ag2(i) = sum(AA);
        }
        Ag.row(j) = Ag2 % gt;
    }

其中Xk,Yk,Ag,Ag2是矩阵,AA,k是向量而其他是双。 Matlab代码运行20秒,Armadillo代码运行380秒。 有人有任何想法吗?非常感谢你的帮助。 谢谢!

0 个答案:

没有答案