我怎样才能通过特征矩阵作为Matlab输出参数?
我尝试过这个[EIGEN] 如何从特征矩阵中取出和取出数据:
MatrixXd resultEigen; // Eigen matrix with some result (non NULL!)
double *resultC; // NULL pointer
Map<MatrixXd>( resultC, resultEigen.rows(), resultEigen.cols() ) = resultEigen;
但它缺少信息,如何将 resultC 中的信息传递给 plhs[0] ?
另外,当我使用此 Map 运行代码时,Matlab 会关闭。
您需要首先分配输出 MATLAB 数组,然后创建一个Eigen::Map
周围:
MatrixXd resultEigen; // Eigen matrix with some result (non NULL!)
mwSize rows = resultEigen.rows();
mwSize cols = resultEigen.cols();
plhs[0] = mxCreateDoubleMatrix(rows, cols, mxREAL); // Create MATLAB array of same size
Eigen::Map<Eigen::MatrixXd> map(mxGetPr(plhs[0]), rows, cols); // Map the array
map = resultEigen; // Copy
其作用是创建一个特征矩阵(map
),其数据为 MATLAB 数组 (plhs[0])。当你写入它时,你实际上是在写入 MATLAB 数组。
请注意,您可以在进行特征计算之前创建此映射,并使用它来代替resultEigen
,以避免最终副本。
另请注意,您可以对输入数组执行完全相同的操作。只要确保他们是班级即可double
(using mxIsDouble
),否则事情可能会变得非常糟糕......:)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)