繁体   English   中英

将 C++ 数组映射到特征矩阵

[英]mapping c++ array to Eigen Matrix

我目前正在尝试做的是从我的变量输入中获取数据,将其转换为特征矩阵,进行一些计算,然后将结果映射回 C++ 数组。

       void RBM::reconstruct(double *input, double *w) 
       {

              double *data = input;
              mexPrintf("\n");

           for (int j = 0; j < 6; j++){
             mexPrintf("%f", data[j]);
           }
                mexPrintf("\n");

            Map<MatrixXd> XX(data,6,6);
            MatrixXd resultEigen;
            double *result;

           Map<MatrixXd>( result, 6, 6 ) =   XX;
           resultEigen = XX.transpose();

           Map<MatrixXd>( result, resultEigen.rows(), resultEigen.cols() ) = resultEigen;
         }

上面的代码编译但我得到(运行时错误)可能链接到访问冲突,我无法真正弄清楚问题出在哪里。 感谢您的任何提示。

你误解了Eigen::Map是什么。 该映射包装了一个现有的内存块,并允许您在该块上使用特征函数。 使用Eigen::Map Eigen 确实处理任何内存分配。 这允许您操作来自其他库的对象中的数据,而无需来回复制。 评论所述,如果将result数组分配为double result[36]; 该程序应该运行良好。

#include <Eigen/Dense>
#include <kdl/jntarray.hpp>

Eigen::MatrixXd mat_1, mat_2;
KDL::JntArray arr;

mat_1 = arr.data.matrix() - mat_2 ;

这里,数组被转换为矩阵

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM