我正在使用 QR 分解和 Eigen 求解线性最小二乘系统,as the documentation suggests .我无法使用圆括号或方括号运算符访问解 vector 中的各个系数 - 否则它们对常规密集矩阵工作得很好。例如访问第一个系数时:
double coef = A.colPivHouseholderQr().solve(b)[0];
我得到以下编译错误:
error: no viable conversion from returned value of type 'const Eigen::ReturnByValue<Eigen::internal::solve_retval_base<Eigen::ColPivHouseholderQR<Eigen::Matrix<double, -1, -1, 0, -1, -1> >, Eigen::Matrix<double, -1, 1, 0, -1, 1> >::YOU_ARE_TRYING_TO_ACCESS_A_SINGLE_COEFFICIENT_IN_A_SPECIAL_EXPRESSION_WHERE_THAT_IS_NOT_ALLOWED_BECAUSE_THAT_WOULD_BE_INEFFICIENT' to function return type 'const double'
return derived().coeff(index);
^~~~~~~~~~~~~~~~~~~~~~
如何单独访问元素?
最佳答案
解决方案
我解决了这个问题。有一个 .array()
调用将表达式类型转换为我可以使用圆括号或方括号运算符索引到的类型。
关于c++ - 如何访问返回 vector 中的系数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49886059/