与 RcppEigen ,我需要一个 Matrix3d 作为函数的参数。但这是不可能的,它只接受 MatrixXd . 我试着投了以下几张,但没用:
RcppEigen
Matrix3d
MatrixXd
Rcpp::List MtoAxisAngle(Eigen::MatrixXd & m) { Eigen::Matrix3d m3 = m.cast(); ......
有什么解决办法吗?
可以在新矩阵的初始化中使用现有矩阵:
// [[Rcpp::depends(RcppEigen)]] #include <RcppEigen.h> // [[Rcpp::export]] Rcpp::List MtoAxisAngle(Eigen::MatrixXd & m) { Eigen::Matrix3d m3(m); return Rcpp::List::create(Rcpp::Named("size") = m3.size()); } /*** R MtoAxisAngle(matrix(1:9,3,3)) # MtoAxisAngle(matrix(1:16,4,4)) */
因为带有不一致矩阵的调用会杀死R,所以应该事先检查大小是否正确。