我对mxGetPr做了什么错误

时间:2017-12-10 23:04:50

标签: c++ matlab mex

请在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会将输入转换为双精度数组。我错过了什么?

1 个答案:

答案 0 :(得分:0)

格式%d适用于int类型的整数值。您必须使用%f作为double s 请参阅documentation of printf