我无法理解如何在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 ++语法方面的专家,所以假设我什么都不知道=]
谢谢!
答案 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文件一样。