给定一个矩阵
A
,我需要与另一个常数向量 B
相乘 N 次(N > 100 万)。 A
的大小为 9000x1
,B
为 9000x1000
。
代码当前按以下方式评估:
for i=1:N
A = func_temp(i); % A is 9000x1 matrix which varies with i
%prod = A.*B; % prod is 9000 x 1000 matrix
%sum_temp = sum(product); % sum_temp is 1 x 1000 matrix
% Edit: suggestion by user @rahnema1
sum_temp = A.' * B;
% do multiple pperations with sum_temp
result(i) = some_constant;
end
我使用 Profiler 来查看哪一行花费的时间最多,它是第二行 (prod = A.*R;)。 问题是 N 非常大,代码需要几天时间才能完成。
我即将尝试并行计算工具箱(GPU计算),但是对于我在基础版本中可以做什么有什么建议吗?
如何减少 MATLAB 中此类代码的运行时间?
使用矩阵乘法运算符:
sum_temp = A.' * B;