gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 11:04:48 26 4
gpt4 key购买 nike

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

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com