我試圖在C中開發一個程序來將稀疏矩陣文件轉換爲稠密矩陣。從我讀到的,最好的方法是使用鏈表,但我沒有經驗,並沒有找到一個很好的在線資源來解釋這個問題。我不是在尋找一個快速解決方案,而是尋找一個網站或文本來源來解釋流程是如何工作的,這樣我就可以將它應用到這個項目中。我所看到的資源,建議使用三個數組來處理矩陣(行,列和單個值)以及向量的兩個數組(一個用於行,另一個用於列)。謝謝!C中的稀疏矩陣轉換
0
A
回答
0
您指定的文件格式適用於密集矩陣。具有100個元素的10×10矩陣是密集的。稀疏矩陣的元素少於n * m個元素,所有「缺失」元素都假定爲0.這樣做的要點是,幾乎全爲零的矩陣(在很多應用程序中都會發生)將使用較少空間。但是,使用稀疏矩陣格式來存儲密集矩陣將使用比普通數組更多的空間。
一種常見的稀疏矩陣文件格式稱爲MatrixMarket,它看起來與您所描述的非常相似。第一行有三個值:行數,列數,非零元素數量(稱爲nnz
)。然後你有三行中的實際元素的nnz行:(row #) (column #) (value)
如果你的稀疏矩陣是一個相似的格式,那麼你不需要在內存中的任何稀疏矩陣。只需掃描值並直接填入密集數組。
如果你確實想在內存中有一個稀疏矩陣,那麼有幾種選擇來存儲它。 Triplets是最簡單的,它只是MatrixMarket文件的內存版本。 3個數組或1個結構數組。 線性代數運算的最常見結構是壓縮稀疏列(CSC)或壓縮稀疏行(CSR)。我會讓你看看,但如果你想要一個C實現與你一起玩,應該看看蒂姆戴維斯'CSparse。這也是MatLAB存儲稀疏矩陣的方式,Tim是編寫MatLAB部分的人員之一。
0
這聽起來像一個鏈表可能不是你要找的,但this site提供了一個關於這個問題的非常全面的教程。它可能有助於揭示它是否適合您的問題......祝您好運!
相關問題
- 1. R:稀疏矩陣轉換
- 2. 轉換SciPy的稀疏矩陣元組
- 3. 擴展/稀疏矩陣轉換成一個更大的稀疏矩陣
- 4. 將矩陣市場轉換爲CRS轉換(稀疏矩陣)
- 5. 稀疏矩陣
- 6. 轉身稀疏矩陣
- 7. 將字典轉換爲稀疏矩陣
- 8. 稀疏矩陣存儲格式 - 轉換
- 9. 將列表轉換爲稀疏矩陣
- 10. Numpy:將稀疏矩陣轉換爲ndarray
- 11. 將稀疏矩陣(dgCMatrix)轉換爲realRatingMatrix
- 12. 從完全轉換爲稀疏矩陣
- 13. Python - 將稀疏矩陣轉換爲JSON
- 14. 稀疏矩陣和矩陣
- 15. Numba中的稀疏矩陣
- 16. 以稀疏矩陣
- 17. 50Kx50K稀疏矩陣
- 18. 稀疏三元組稀疏矩陣matlab
- 19. 確定稀疏矩陣的稀疏性(Lil矩陣)
- 20. 將稀疏矩陣轉換爲完整矩陣 - R
- 21. 如何將共生矩陣轉換爲稀疏矩陣
- 22. 大轉換矩陣來稀疏矩陣在python
- 23. 無法將稀疏矩陣轉換爲稠密矩陣
- 24. R將矩陣或數據幀轉換爲稀疏矩陣
- 25. 在dfm稀疏矩陣中替換值
- 26. python稀疏矩陣的矩陣功率
- 27. 98%稀疏矩陣的矩陣完成
- 28. 如何將1x1 Eigen :: C++稀疏矩陣轉換爲整數值?
- 29. 如何將邏輯稀疏矩陣轉換爲MATLAB中的整數稀疏矩陣?
- 30. 稀疏矩陣的劃分
源文件中的數據格式是什麼。 – 2011-04-30 21:12:32
輸入文件將不包含不必要的格式,並且將嚴格填充一系列必需的值。矩陣文件中的前兩個值將根據行和列指示維度,其餘值則是所需的數據。例如,如果我有一個10x10矩陣,前兩個值將是10和10,然後是另外100個要用作數據的元素。我必須將稀疏矩陣轉換成一個密集矩陣,所以我可以執行矩陣向量乘法,所以矩陣和向量都必須經過轉換。 – Strata 2011-04-30 21:24:57
但是,我已經爲乘法設計了一個算法,以便完成方面。在最初的兩個值之後,文件的其餘部分將按順序列出值,但轉換後將存儲在一維數組中。如果不清楚,我很抱歉,因爲這個概念對我來說依然非常抽象。 – Strata 2011-04-30 21:25:23