使用Eigen求矩阵的逆,代码如下:
int array[ 9][ 9] = {
0,0,0,1,1,0,1,0,1,
0,1,1,0,1,0,1,1,1,
0,1,0,1,0,0,1,1,0,
1,1,0,1,0,1,0,0,1,
0,1,0,1,1,0,1,1,1,
0,1,0,1,0,1,0,0,0,
0,0,0,1,1,0,0,0,0,
1,1,0,1,0,1,0,0,0,
0,1,0,1,1,0,1,0,0
};
Matrix< int , 9, 9> m = Map< Matrix< int , 9, 9> >( ( int* )array );
Matrix< int , 9, 9> n = m.inverse();
编译时提示错误error C2039: “THIS_FUNCTION_IS_NOT_FOR_INTEGER_NUMERIC_TYPES”: 不是“Eigen::internal::static_assertion<condition>”的成员。
将int类型改成double,
double array[ 9][ 9] = {
0,0,0,1,1,0,1,0,1,
0,1,1,0,1,0,1,1,1,
0,1,0,1,0,0,1,1,0,
1,1,0,1,0,1,0,0,1,
0,1,0,1,1,0,1,1,1,
0,1,0,1,0,1,0,0,0,
0,0,0,1,1,0,0,0,0,
1,1,0,1,0,1,0,0,0,
0,1,0,1,1,0,1,0,0
};
Matrix< double, 9, 9> m = Map< Matrix< double, 9, 9> >( ( double* )array );
Matrix< double, 9, 9> n = m.inverse();
问题就解决了。