提问人:Cedric Martens 提问时间:11/14/2023 更新时间:11/14/2023 访问量:45
C++ 特征值 - 由于“maxCoeff()”错误而无法运行 SVD
C++ Eigen - Cannot run SVD due to "maxCoeff()" error
问:
我有以下代码
Eigen::SparseMatrix<double> S = A*B.transpose();
Eigen::JacobiSVD<Eigen::SparseMatrix<double>> svd(S);
使用 JacobiSVD 和 BDCSVD 计算 SVD 时存在错误
/eigen-src/Eigen/src/SVD/JacobiSVD.h: In instantiation of
‘Eigen::JacobiSVD<MatrixType, QRPreconditioner>&
Eigen::JacobiSVD<MatrixType, QRPreconditioner>::compute(const MatrixType&,
unsigned int) [with _MatrixType = Eigen::SparseMatrix<double>; int
QRPreconditioner = 2; MatrixType = Eigen::SparseMatrix<double>]’:
/eigen-src/Eigen/src/SVD/JacobiSVD.h:548:14: required from
‘Eigen::JacobiSVD<MatrixType, QRPreconditioner>::JacobiSVD(const
MatrixType&, unsigned int) [with _MatrixType = Eigen::SparseMatrix<double>;
int QRPreconditioner = 2; MatrixType = Eigen::SparseMatrix<double>]’
/eigen-src/Eigen/src/SVD/JacobiSVD.h:676:40: error:
‘const Eigen::SparseMatrixBase<Eigen::SparseMatrix<double> >::CwiseAbsReturnType’
{aka ‘const class Eigen::CwiseUnaryOp<Eigen::internal::scalar_abs_op<double>, const
Eigen::SparseMatrix<double> >’} has no member named ‘maxCoeff’
676 | RealScalar scale = matrix.cwiseAbs().maxCoeff();**
我不知道为什么我的矩阵失败了,为什么没有定义maxCoeff()?我太新了,Eigen也无法理解。
答: 暂无答案
评论
matrix.array().abs()
JacobiSVD
maxCoeff