我试图使用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.我得到的类型错误在这里.
这个最小的例子显示了我的机器上的问题.更改的类型c从auto到MatrixXd看到它的工作.
#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 …