Mex - 传递和接收变量

时间:2015-08-19 07:06:56

标签: matlab mex

我无法理解如何在matlab和mex之间传递和接收变量。主要原因是

mex函数的签名如下:

void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[])

假设在.cpp文件中我有一个C ++函数:

void foo(char stringInput , unsigned char arrayInput , int integerInput)
{interesting stuff}

假设我在mex函数的* plhs中拥有foo所需的所有输入。

如何将它们传递给foo,以及如何将结果返回给matlab? 我也不是C ++语法方面的专家,所以假设我什么都不知道=]

谢谢!

1 个答案:

答案 0 :(得分:0)

你提到的mex功能签名

void mexFunction(int nlhs,mxArray * plhs [],int nrhs,const mxArray * prhs [])

解码从Matlab调用传递给mex函数的信息。

例如,如果我有一个名为&#39的mex函数,则添加'我想用matlab从matlab调用它 c = add(a,b);

在这种情况下,我的输入变量' a'和' b'存储在* prhs,(指向右侧变量的指针)中,作为变量' c'存储在* plhs中,(指向左手侧变量的指针)。

所以,重点是,需要修改他的* .cpp函数,具体取决于你想从Matlab调用它的方式。

在你的情况下,一旦你复制了mex函数中从matlab传递的所有变量,就可以像mex函数一样调用你的foo函数,就像我们只用* .cpp文件一样。