当使用最小二乘法求解时,Eigen :: SPQR模块会抱怨行不匹配

时间:2016-10-12 13:40:24

标签: sparse-matrix eigen suitesparse

我正在使用Eigen::SPQR模块来解决最小二乘问题Ax = b,我收到一个错误,抱怨解决步骤中的行不匹配。一般来说,我的代码包括使用三元组初始化A,使用括号运算符b然后计算QR分解并最终求解。

Eigen::SparseMatrix<double> A;
// Fill A using triplets

Eigen::VectorXd b(A.rows()); 
// Fill b using square bracket operator b[i] = ...

Eigen::SPQR< Eigen::SparseMatrix < double > > QR(A);

Eigen::VectorXd X = QR.solve(b); // Line giving error. 

创建的矢量b的大小等于A.rows(),所以我确信它是正确的。但是,当我检查函数QR.rows()时,它返回A.cols()的值。这是某种错误吗?我检查过Eigen::SparseQR没有错误地解决了它但速度慢了很多,所以我想改用SuiteSparse模块。有任何想法吗?

0 个答案:

没有答案