Matlab 中的高效矩阵乘法



如果我有两个矩阵AB,假设大小都m n,那么执行以下操作(在 Matlab 中)的最佳方法是什么:

C = zeros(m,m);
for t=1:n
    C=C+A(:,t)*B(:,t)';
end

这只不过是

C = A*B';

其中AB分别m n。我不确定你会得到比这更有效率,除非矩阵具有特殊属性。

使用 bsxfun 进行矩阵乘法可能会受益的一个地方是当维度足够大(可能是 100 x 100 或更大)并且一个矩阵是对角线时,例如:

A = rand(1e2);
B = diag(rand(1,1e2));
C = bsxfun(@times,A,diag(B).');

这发生在许多矩阵转换中 – 请参阅sqrtm的代码,例如 ( edit sqrtm )。

相关内容

  • 没有找到相关文章

最新更新