如何在返回向量中访问系数

时间:2018-04-17 19:28:03

标签: c++ eigen

我使用Eigen,as the documentation suggests的QR分解求解线性最小二乘系统。我无法使用括号或括号运算符访问求解向量中的各个系数 - 否则这对于常规密集矩阵可以正常工作。例如访问第一个系数时:

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);
         ^~~~~~~~~~~~~~~~~~~~~~

如何单独访问元素?

1 个答案:

答案 0 :(得分:0)

解决方案

我解决了这个问题。这是一个.array()调用,它将表达式类型转换为我可以使用括号或括号运算符索引的类型。