2016-11-13 52 views
0

我試圖將m代碼移植到ccppMATLAB中有稀疏的任何C++/C等價函數

在我的代碼有一個線

A = sparse(I,J,IA,nR,nC); 

哪一行索引I,列索引J,和數據IA轉換爲稀疏矩陣A與大小nR x nC

是否有任何與C++或C等價的代碼?

一個天真的算法在全矩陣複製的結果是

double *A; 
A = malloc(sizeof(double)*nR*nC); 
memset(A, 0, sizeof(double)); 

for(k=0; k<size_of_IA; k++) 
    A[I[k]*nC + J[k]] += IA[k]; 

注意,如果有共同的指標,其值不超過覆蓋,但積累。

回答

2

Eigen是一個C++數學矩陣庫的例子,它包含了稀疏矩陣。它使運營商重載,使其感覺像內置功能。

有許多C和C++矩陣庫。沒有作爲std的一部分發貨,也沒有內置任何東西。

編寫一個好的稀疏矩陣庫將非常困難;你最好的選擇是找到一個預先寫好的。推薦問題關閉主題

+0

謝謝。我知道有特徵支持稀疏矩陣操作,但我不知道有相同的功能。我閱讀了文檔,發現'setFromTriplets'就是我想要的。謝謝! – Dohyun