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의 배열로 변환하기 때문입니다. 내가 놓친 게 무엇입니까?