gpt4 book ai didi

mex 从 mex 函数将向量从 c++ 传输到 matlab

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

我试图通过用 C++ 编写一些函数并使用 mex 接口(interface)来集成它们来加速我的 Matlab 程序。我在 C++ 的向量中得到了我的结果。我想将它传输到 MATLAB 中的数组。我知道我应该重定向

 plhs[0] to the vector 
但我不知道我应该怎么做。

最佳答案

当我完成类似的事情时,我会手动整理数据,以便在 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 ,这是一个很好的资源。

关于mex 从 mex 函数将向量从 c++ 传输到 matlab,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9640738/

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