嘿那里,我真的不明白如何访问通过matlab中的参数传递给mex函数的数据.假设我有'默认'网关功能
void mexFunction( int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[] )
Run Code Online (Sandbox Code Playgroud)
现在我得到了指向1.输入参数的指针:
double* data_in;
data_in = mxGetPr(prhs[0]);
Run Code Online (Sandbox Code Playgroud)
以下几行每个单独使我的matlab崩溃:
mexPrintf("%d", *data_in);
mexPrintf("%d", data_in[1]);
Run Code Online (Sandbox Code Playgroud)
但是,当data_in显然是指向第一个参数的指针时,为什么我不能访问数据呢?
非常感谢提前!
data_in是一个指针,double所以你需要类似的东西
mexPrintf("%f", data_in[0]);
Run Code Online (Sandbox Code Playgroud)
这假设调用者传递了大小> 0的向量或矩阵.
更一般地说,你可以
int n = mxGetN(array);
int m = mxGetM(array);
Run Code Online (Sandbox Code Playgroud)
获取传递给mex函数的矩阵/向量的行数和列数.
mxArray:Matlab将其矩阵(复杂和真实)打包在mxArray结构中.mxCreateDoubleMatrix返回指向此类结构的指针.要实际访问该数据,您需要对实部使用mxGetPr(),对虚部使用mxGetPi().
这些返回指向已分配double[]数组的指针,您可以使用它们来访问(读取和写入)矩阵的元素.