c++ - 通过mexfunction从C++将int类型的N个 vector 返回到matlab?

标签 c++ matlab vector compiler-errors mex

我正在尝试使用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 仅从0N-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/

相关文章:

c# - 在matlab中将音频文件转换为字节数组

matlab - 旋转时保持图像尺寸

c++ - 简单的 C++ vector 程序未编译

c++ - 使用 c malloc 函数分配内存的意外结果

android - 对 'DTLS_client_method' 的 undefined reference

c++ - 在派生类中调用 sizeof(*this)

c++ - 从非原始类型的 vector 中删除重复元素

函数参数中的c++函数定义

performance - Pentago 董事会的获胜者

c++ - 访问指向 std::vector 的元素