matlab - 稀疏与正常数组 Matlab

标签 matlab performance sparse-matrix

在 Matlab 中,如果我仍然需要对它进行大量计算并且大约 25% 的数组是非零值,那么在什么情况下稀疏数组比普通数组更好?

最佳答案

就我个人而言,我很少为只有 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.

作为稀疏矩阵,与此相关的额外工作成本太高,不值得。现在尝试使用真正稀疏的矩阵。

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.

当然,你自己的问题会有所不同,但不会有那么大的不同。稀疏矩阵对于使用真正稀疏矩阵的人来说是一个真正的福音,但在大多数情况下,25% 的非零对于任何 yield 来说根本不够“稀疏”。

关于matlab - 稀疏与正常数组 Matlab,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3292437/

相关文章:

algorithm - 存储和读取 n 维稀疏矩阵

matlab - 在 matlab 中追踪包含背景图像的图形

algorithm - 直径提取的 MATLAB 圆形滑动窗口和像素值

使用 C 中的链表创建稀疏矩阵

android - 无法解析 android studio 中的default_web_client_id

php - 寻找短期解决方案以通过额外的服务器提高网站性能

algorithm - 稀疏矩阵——矩阵乘法

matlab - 无法更新 Matlab 中的类定义

arrays - 如何找到矩阵中的唯一行,每行中没有元素顺序?

performance - 查找 2D 平面上的 2 个对象是否会发生碰撞的算法