【问题标题】:Multiply matrices with big size乘以大尺寸的矩阵
【发布时间】:2014-03-13 01:23:43
【问题描述】:

我想尝试在 matlab 中计算三个矩阵的乘积。 矩阵的形成描述如下:

L = D^(-1/2) * A * D^(-1/2);

DALn*n 矩阵。 AL 不是对角线或稀疏的,但 D 是对角线的。在这种情况下n = 16900。当我在matlab中计算L时,需要很长时间,大约4个小时!

我的问题是:有没有更有效的方法来计算L

【问题讨论】:

  • 什么是D^(-1/2)^(-1/2) 操作是否按元素进行?
  • 不,不是。这是常规的矩阵乘法。
  • 我认为在对角矩阵的情况下是一样的。请看我的回答

标签: matlab matrix large-data


【解决方案1】:

您可以专门化渐近更快的乘法,而不是使用简单的矩阵乘法。我想到了 Strassen 的算法,但如果我没记错的话,它通常具有很高的常数,尽管它具有更好的渐近复杂度。如果矩阵中的可能值集非常有限,则可以使用“四个俄罗斯人”方法的变体。

【讨论】:

    【解决方案2】:

    您可以使用两次bsxfun。我不确定它会不会更快:

    v = diag(D).^(-1/2); %// this is the same as diag(D.^(-1/2))
    L = bsxfun(@times, v.', bsxfun(@times, A, v));
    

    【讨论】:

      猜你喜欢
      • 2013-07-18
      • 2013-12-20
      • 2018-02-22
      • 1970-01-01
      • 1970-01-01
      • 2021-12-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多