在Matlab中,如果我仍然需要进行大量计算,并且大约25%的数组是非零,那么在什么时候稀疏阵列比正常阵列好?稀疏与正常阵列Matlab
11
A
回答
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.
与此相关的额外工作作为稀疏矩阵花费太多而不值得费心。现在尝试一个非常稀疏的矩阵。
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%的非零值对于任何增益都不足够“稀疏”。
4
编辑 - 误解了问题。
由于稀疏矩阵算法具有75%的稀疏性,您可以很好地看到显着的性能提升。我会说这绝对值得一试。 (例如,您每次执行矩阵向量乘法操作时,都会大大减少操作次数)。这两个地方可以节省内存(减少内存使用量的四分之一)和操作需要)。在你的情况下,减轻因素可能是你矩阵的大小。转向稀疏矩阵运算,您通常会失去使用密集矩阵看到的良好缓存特性。因此,通常有一个从密集到稀疏的转变导致效率增加的阈值。
相关问题
- 1. 稀疏三元组稀疏矩阵matlab
- 2. matlab:稀疏矩阵分解
- 3. 多稀疏矩阵与SQL
- 4. Python多维稀疏阵列
- 5. 建设稀疏阵列
- 6. 稀疏阵列压缩
- 7. 执行稀疏阵列
- 8. 稀疏矩阵
- 9. Matlab中的稀疏三维矩阵
- 10. Matlab有效的稀疏矩阵乘法
- 11. 快速(稀疏)矩阵在MATLAB
- 12. Matlab - 稀疏矩阵系统分辨率
- 13. 关于稀疏矩阵的Matlab问题
- 14. MATLAB - 稀疏到稠密矩阵
- 15. matlab中的稀疏矩阵数组
- 16. 稀疏矩阵分配变得在Matlab
- 17. 在matlab中绘制稀疏矩阵
- 18. 解决奇异稀疏矩阵MATLAB
- 19. 从稀疏矢量列表创建稀疏矩阵
- 20. 以稀疏矩阵
- 21. 50Kx50K稀疏矩阵
- 22. 稀疏矩阵和矩阵
- 23. 征:如何初始化一个稀疏矩阵与一些子稀疏矩阵
- 24. 确定稀疏矩阵的稀疏性(Lil矩阵)
- 25. C++ - MATLAB:更新稀疏矩阵列块这里
- 26. Matlab:只对稀疏矩阵的列进行置换
- 27. Matlab稀疏阵列索引重新分配
- 28. Matlab的稀疏svd函数
- 29. 稀疏索引在MATLAB
- 30. 使用广播与稀疏scipy矩阵