我试图乘以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();
这适用于小矩阵,但对于较大的矩阵,它只运行和运行,并且有一个seg故障的十次崩溃。 Matlab中的相同内容需要几秒钟。所以,我想知道它是否试图将整个矩阵保持在某个地方。如果确实如此,那真是太糟糕了!我查看了文档,并且这样做是建议在运行中修剪矩阵。
答案 0 :(得分:0)
基本上,该文件至少让我感到困惑。
这样做的方法很简单:
SpMat mat_3 = mat_1 * mat_2
沿途没有创建密集矩阵。
特征岩石!