0

我正在研究一个大矩阵乘法。我有一个大矩阵 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;

它速度很快,但它浪费了太多的内存。当矩阵的大小增加时,它会占用过多的内存。这是使用更少内存但速度更快的任何想法吗?

4

1 回答 1

4

经典的bsxfun

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

或者,您可能想查看James Tursa 的 MTIMESX(在 FEX 中找到)。

于 2013-07-15T05:24:06.457 回答