乘以大尺寸的矩阵

时间:2014-02-13 22:06:40

标签: matlab matrix large-data

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

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

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

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

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

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

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