2017-12-10 22 views
0

로 잘못 했습니까 내가이 cppfunc([1 2 3], [1 2 3], [1 2 3])처럼 내 MEX 함수를 호출 할 계획 mexFunction내가 mxGetPr

\\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]); 

} 

내 코드의 발췌을 고려하시기 바랍니다. 기본적으로 세 개의 MATLAB 벡터를 사용하고 첫 번째 입력 벡터의 첫 번째 요소를 mexPrintf을 통해 출력합니다. 출력은 1이어야합니다. 그러나 반환 값은

upper 1=3입니다.

함수는 첫 번째 입력 벡터의 길이를 반환합니다. 예를 들어 cppfunc([1 2 3 4], [1 2 3], [1 2 3])을 입력하면 upper 1=4이 반환됩니다.

나는 mexPrintf에 대한 호출에서 %d을 사용하여 올바르게 생각했습니다. mxGetPr은 입력을 double의 배열로 변환하기 때문입니다. 내가 놓친 게 무엇입니까?

답변

0

서식 %dint의 정수 값입니다. double%f을 사용해야합니다.
documentation of printf을 참조하십시오.