【问题标题】:mex transferring a vector from c++ to matlab from mex functionmex 从 mex 函数将向量从 c++ 传输到 matlab
【发布时间】:2012-03-18 04:53:40
【问题描述】:

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

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

【问题讨论】:

  • 您是否检查过我的代码是否可以帮助您解决问题?如果您对此有任何疑问,请告诉我。如果它确实解决了它,请将其标记为答案。谢谢!

标签: mex


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-11-10
    • 1970-01-01
    • 1970-01-01
    • 2017-08-27
    • 1970-01-01
    • 2018-03-04
    • 1970-01-01
    相关资源
    最近更新 更多