我正在尝试通过在C ++中编写一些函数并使用mex接口来集成它们来使我的Matlab程序更加完善。我用c ++中的向量得到了我的结果。我想将它传输到MATLAB中的数组。 我知道我应该重定向
plhs[0] to the vector
但我不明白我该怎么做。
答案 0 :(得分:6)
当我完成类似的事情时,我手动编组数据,以便在C ++例程完成时不会释放它。这是一个基本概要:
#include <vector>
#include "mex.h"
mxArray * getMexArray(const std::vector<double>& v){
mxArray * mx = mxCreateDoubleMatrix(1,v.size(), mxREAL);
std::copy(v.begin(), v.end(), mxGetPr(mx));
return mx;
}
void mexFunction(int nlhs, mxArray *plhs[ ], int nrhs, const mxArray *prhs[ ]) {
std::vector<double> v;
v.push_back(0);
v.push_back(1);
v.push_back(2);
v.push_back(3);
plhs[0] = getMexArray(v);
}
如果我将其保存为test.cpp
然后在该目录中打开matlab,我会执行以下操作:
>> mex test.cpp
>> test
ans =
0 1 2 3
这是预期的输出。希望这是一个很好的起点 - 你可能想要内联它,但我不确定它的好处。顺便说一句,如果你还没有查看matlab mex help,那就是一个很好的资源。