【发布时间】:2015-12-09 11:40:40
【问题描述】:
我目前正在尝试做的是从我的变量输入中获取数据,将其转换为 Eigen 矩阵,进行一些计算,然后将结果映射回 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;
}
上面的代码可以编译,但我得到(运行时错误)可能链接到访问冲突,我无法真正弄清楚问题出在哪里。感谢您的任何提示。
【问题讨论】:
-
result未分配。 -
你好 akakatak,我认为分配将动态完成。我对 Eigen Library 不是很熟悉。
-
这是一个关于
Eigen::Map的reference。它说'一个矩阵或向量表达式映射一个现有数组的数据。 表达式 表示该对象在 rum-time 中不保存任何数据。它只是一个包装器。 existing 意味着你必须准备一个数组,因为这个对象只是一个表达式。 -
我认为这与 MATLAB 无关!
-
如果我没记错的话,你应该可以通过
double *result[6*6];解决问题