0
我想乘以2個本徵稀疏矩陣。代碼如下:本徵稀疏矩陣乘法似乎計算全矩陣
Eigen::SparseMatrix<float> SpMat;
SpMat mat_1;
mat_1.resize(n_e, n_e);
... Fill the matrix. It is sparse
SpMat mat_2;
mat_1.resize(n_e, n_e);
... Fill the matrix. It is sparse
SpMat mat_3 = (mat_1 * mat_2).pruned();
這正常爲小矩陣,但對於較大的矩陣,它只是運行,並且運行十個崩潰了賽格故障。在Matlab中同樣的事情需要幾秒鐘。所以,我想知道它是否試圖將整個矩陣保留在某個地方。如果確實如此,那真的很糟糕!我查看了文檔,並且這樣做是它建議在運行中修剪矩陣的原因。
好吧,看來我不應該使用pruned()。它運作良好沒有它,但我不知道爲什麼作爲文檔明確指出使用它:http://eigen.tuxfamily.org/dox-devel/group__TutorialSparse.html 請參閱矩陣產品部分... – Luca 2014-11-24 15:06:48
你也試過'而不是(變成另一個)(SOME_SMALL_NUMBER)'?也許在這裏有很大的舍入錯誤,它會阻止pruned()有效地運行。 – davidhigh 2014-11-24 17:57:39