我正在尝试使用mex函数将 vector 返回回matlab。我声明一个返回指针为,
double *retPtr = NULL;
然后返回代码如下:
plhs[0] = mxCreateDoubleMatrix(N, 1, mxREAL);
retPtr = mxGetPr(plhs[0]);
for (int i = 0; i < N; i++)
{
retPtr[i] = forest->predictLabel(&(testData[i*M]), M);
}
返回类型是 vector ,但是我继续得到错误:
Error 1 error C2440: '=' : cannot convert from 'std::vector<_Ty>' to 'double'
我在声明指针的方式上遇到问题。任何帮助,将不胜感激。
问候,
埃里克
最佳答案
如果你改变
retPtr[i] = forest->predictLabel(&(testData[i*M]), M);
至
retPtr[i] = i;
然后它将编译并运行,将 vector 返回到MATLAB。
当然,您可能不希望 vector 仅从
0
到N-1
计数。但是您将必须弄清楚C++代码才能获得所需的数字。我们都不知道您的forest
对象或predictLabel
函数在做什么。要实际返回
N
不同的 vector ,可以将它们打包在一个单元格数组中(这样可以改变大小)。plhs[0] = mxCreateCellMatrix(M, 1);
for (int i = 0; i < N; i++)
{
std::vector<int> results = forest->predictLabel(&(testData[i*M]), M);
mxArray* ithCell = mxCreateDoubleMatrix(results.size(), 1, mxREAL);
retPtr = mxGetPr(ithCell);
for (int j = 0; j < results.size(); ++j)
retPtr[j] = results[j];
mxSetCell(plhs[0], i, ithCell);
}
关于c++ - 通过mexfunction从C++将int类型的N个 vector 返回到matlab?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19792608/