请在mexFunction
\\cppfunc.cpp
void mexFunction(int nlhs,mxArray *plhs[],int nrhs,const mxArray *prhs[]){
\\...Parts where I check the number of lhs and rhs
double* upper = mxGetPr(prhs[0]);
double* lower = mxGetPr(prhs[1]);
double* grids = mxGetPr(prhs[2]);
mexPrintf("upper 1=%d \n\n", upper[0] );
}
我打算像这样cppfunc([1 2 3], [1 2 3], [1 2 3])
调用我的mex函数。基本上,它接收三个MATLAB
向量并通过mexPrintf
打印出第一个输入向量的第一个元素。输出应为1
。但是,它返回:
upper 1=3
。
在我看来,该函数返回第一个输入向量的长度。例如,如果我执行cppfunc([1 2 3 4], [1 2 3], [1 2 3])
,则会返回upper 1=4
。
我认为我在调用%d
时使用mexPrintf
是对的,因为mxGetPr
会将输入转换为双精度数组。我错过了什么?