在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矩陣