小编c0g*_*c0g的帖子

对于矩阵乘积的Cholesky,Eigen和C++ 11类型推断失败

我试图使用Eigen和C++ 11"auto"类型对其转置矩阵的乘积进行cholesky分解.我试图做的时候出现问题

auto c = a * b
auto cTc = c.tranpose() * c;
auto chol = cTc.llt();
Run Code Online (Sandbox Code Playgroud)

我正在使用XCode 6.1,Eigen 3.2.2.我得到的类型错误在这里.

这个最小的例子显示了我的机器上的问题.更改的类型cautoMatrixXd看到它的工作.

#include <iostream>
#include <Eigen/Eigen>
using namespace std;
using namespace Eigen;


int main(int argc, const char * argv[]) {
    MatrixXd a = MatrixXd::Random(100, 3);
    MatrixXd b = MatrixXd::Random(3, 100);
    auto c = a * b;
    auto cTc = c.transpose() * c;
    auto chol = cTc.llt();
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

有没有办法让这个工作仍然使用自动?

作为一个侧面问题,是否有一个表现理由不断言矩阵是MatrixXd …

c++ eigen auto c++11 eigen3

8
推荐指数
2
解决办法
927
查看次数

标签 统计

auto ×1

c++ ×1

c++11 ×1

eigen ×1

eigen3 ×1