使用RcppEigen将矩阵x3D转换为矩阵x3D
使用使用RcppEigen将矩阵x3D转换为矩阵x3D,r,casting,eigen,rcpp,R,Casting,Eigen,Rcpp,使用RcppEigen,我需要一个Matrix3d作为函数的参数。但这是不可能的,它只接受MatrixXd。我试着投下以下的角色,但这不起作用: Rcpp::List MtoAxisAngle(Eigen::MatrixXd & m) { Eigen::Matrix3d m3 = m.cast(); ...... 任何解决方案?您可以在初始化新矩阵时使用现有矩阵: // [[Rcpp::depends(RcppEigen)]] #include <RcppEigen.h&
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))
*/
/[[Rcpp::depends(RcppEigen)]]
#包括
//[[Rcpp::导出]]
Rcpp::列表MtoAxisAngle(特征::矩阵D&m)
{
本征::矩阵x3d m3(m);
返回Rcpp::List::create(Rcpp::Named(“size”)=m3.size();
}
/***R
MtoAxisAngle(矩阵(1:9,3,3))
#MtoAxisAngle(矩阵(1:16,4,4))
*/
由于使用不一致矩阵的调用会杀死R,因此您应该事先检查大小是否正确。您可以在初始化新矩阵时使用现有矩阵:
// [[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))
*/
/[[Rcpp::depends(RcppEigen)]]
#包括
//[[Rcpp::导出]]
Rcpp::列表MtoAxisAngle(特征::矩阵D&m)
{
本征::矩阵x3d m3(m);
返回Rcpp::List::create(Rcpp::Named(“size”)=m3.size();
}
/***R
MtoAxisAngle(矩阵(1:9,3,3))
#MtoAxisAngle(矩阵(1:16,4,4))
*/
由于使用不一致矩阵的调用会杀死R,因此您应该事先检查大小是否正确。尚未测试,但我认为我找到了解决方案:
Eigen::Matrix3d m3=Eigen::matrix(m)代码>尚未测试,但我想我已经找到了一个解决方案:Eigen::Matrix3d m3=Eigen::Matrix(m)谢谢拉尔夫。这比我想象的要简单。也谢谢你的建议。谢谢拉尔夫。这比我想象的要简单。也谢谢你的建议。