我想創建一個自定義優化的矩陣運算(根據我瞭解的稀疏矩陣我使用的是智能直積)使用MathNet.numerics爲指數CSHARP。C#Mathnet Numerics的 - 獲得非零稀疏矩陣元素
是否有訪問得到一個稀疏矩陣的非零元素? (或索引嗎?或者它們的迭代器?或CSR表示?)
我想創建一個自定義優化的矩陣運算(根據我瞭解的稀疏矩陣我使用的是智能直積)使用MathNet.numerics爲指數CSHARP。C#Mathnet Numerics的 - 獲得非零稀疏矩陣元素
是否有訪問得到一個稀疏矩陣的非零元素? (或索引嗎?或者它們的迭代器?或CSR表示?)
您可以使用IndexedEnumerator
只能訪問你的矩陣中的非零元素。方法簽名是:
public override IEnumerable<Tuple<int, int, double>> IndexedEnumerator()
例如,下面的代碼:
var mtx = new SparseMatrix(new DiagonalMatrix(3, 3, new[] {1.0, 1, 1}));
Console.WriteLine(mtx.NonZerosCount);
foreach (var tuple in mtx.IndexedEnumerator())
{
Console.WriteLine("({0},{1}) = {2}", tuple.Item1, tuple.Item2, tuple.Item3);
}
將產生以下的輸出:
3
(0,0) = 1
(1,1) = 1
(2,2) = 1
啊,用幾分鐘的時間來回答打我。 – ja72 2012-08-03 15:15:12
由於V2.2.1還可以訪問原始CSR表示直接:
var m = new SparseMatrix(1000,1000);
var csr = (SparseCompressedRowMatrixStorage<double>) m.Storage;
要注意的是目前我們的企業社會責任不非零ValueCount存儲在行指針數組的最後一個領域,雖然我們很可能會改變,在不久的將來(成爲完全兼容,也爲代碼的簡化)
由於Math.NET Numerics的V2.2.1中,克羅內克積在稀疏矩陣重載正確利用稀疏性。 – 2012-08-29 13:10:21