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