matlab中矩阵的逐元素乘法的替代方法

时间:2013-07-15 05:08:13

标签: matlab matrix vectorization bsxfun

我正在进行大矩阵乘法。我有一个大矩阵A(至少5000x5000)和一个列向量V(5000x1)。在我的代码中,每个V将逐个元素地将A列的每一列相乘。我用循环

做了
K = zeros(5000, 5000);
for n=1:5000
  K(:, n) = V.*A(:, n);
end

但它太慢了。所以我创建一个大矩阵,每列分配为V,这样

MV=repmat(V,1,5000);
K = MV.*A;
它很快但浪费了太多内存。当矩阵的大小增加时,它会占用太多内存。是否有任何想法使用更少的内存,但速度快?

1 个答案:

答案 0 :(得分:4)

经典bsxfun

K = bsxfun( @times, A, V );

或者,您可能需要查看James Tursa's MTIMESX(在FEX中找到)。