2011-09-23 5 views
0

일부 C mex 파일을 순수 C++로 변환 중입니다. 분명히 mxarrays 및 mex 함수를 변환해야합니다. 라인 68는 code에서 보는 바와 같이,이 라인 (60)에서 mxarray를 생성C MEX 파일을 순수 C++로 변환하는 중 오류가 발생했습니다

,

mxArray *mxGradient = mxCreateNumericArray(3, out, mxDOUBLE_CLASS, mxREAL); 

및 라인 61 mxgetpr와 포인터에 할당에서

,

double *gradient = (double *)mxGetPr(mxGradient); 

double *tempGradientVBase = gradient + (out[0] * out[1]); 

나는 u로 관리 할 수 ​​없었습니다. 68 행을 이해하십시오. 그것이 무엇을 의미합니까?

나는 mxarrays와 mex 파일에 관해서 많이 모른다. 누구든지 날 도와 줄 수 있니?

답변

1

이것은 C pointer arithmetic입니다.

붙여 넣은 코드는 double 배열의 첫 번째 double에 대한 포인터로 gradient을 처리합니다. gradient + (out[0] * out[1])은 "double의 포인터를 double의 배열 out[0] * out[1]에서 gradient"으로 시작한다는 의미입니다. &gradient[ out[0] * out[1] ]과 같습니다.

관련 문제