稀疏与普通数组Matlab

Elp*_*rto 11 performance matlab sparse-matrix

在Matlab中,如果我还有很多计算要做,那么稀疏数组比普通数组更好,大约25%的数组是非零?

小智 21

就个人而言,我很少为稀疏的数据打扰,只有25%的非零.如果您不相信我,请亲自尝试.

A = sprand(2000,2000,0.25);
tic,B = A*A;toc
Elapsed time is 1.771668 seconds.

Af = full(A);
tic,B = Af*Af;toc
Elapsed time is 0.499045 seconds.
Run Code Online (Sandbox Code Playgroud)

作为稀疏矩阵的额外工作花费太多而不值得烦恼.现在用一个非常稀疏的矩阵来尝试它.

A = sprand(2000,2000,0.005);
Af = full(A);

tic,B = A*A;toc
Elapsed time is 0.037763 seconds.

tic,B = Af*Af;toc
Elapsed time is 0.446680 seconds.
Run Code Online (Sandbox Code Playgroud)

当然,你自己的问题会有所不同,但不会有什么不同.对于使用真正稀疏矩阵的人来说,稀疏矩阵是一个真正的福音,但在大多数情况下,25%的非零对于任何增益都不够"稀疏".