c++ - 如何访问返回 vector 中的系数

标签 c++ eigen

我正在使用 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/

相关文章:

c++ - RSA_private_decrypt错误

c++ - 如何使用 std::nested_exception 和 friend ?

c++ - 将二维数组映射到 Eigen::Matrix

c++ - 我怎么能像 numpy 那样从 MxN 矩阵中减去 1xN 特征矩阵?

c++ - 使用 Eigen 创建简单矩阵?

c++ - 为什么返回不复制对象?

c++ - 有没有好的C++模板引擎

c++ - 我不小心没有使用 std::ref - 结果代码做了什么?

c++ - Eigen 从矩阵初始化

C++(函数)模板返回其唯一参数而不为某些类型复制它