最近我需要将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秒。 有人有任何想法吗?非常感谢你的帮助。 谢谢!