C MEX 파일에 구조체와 셀형 배열 전달하기
MEX 파일에 구조체와 셀형 배열을 전달하는 것은 C Matrix API의 데이터 자체가 mxArray
유형이라는 점을 제외하면 다른 데이터형을 전달하는 것과 같습니다. 실제로 mxGetField
(구조체용)와 mxGetCell
(셀형 배열용)은 mxArray
유형의 포인터를 반환합니다. 이 포인터를 mxArray
유형의 다른 포인터처럼 처리하면 됩니다. mxArray
에 포함된 데이터를 C 루틴에 전달하려면 mxGetData
와 같은 API 함수를 사용하여 데이터에 액세스하십시오.
이 MEX 파일 예제에서는 C Matrix API를 사용합니다. C++용 MATLAB Data API를 사용하는 C++ MEX 파일 예제는 phonebook.cpp
항목을 참조하십시오. 이 API를 사용하여 MEX 파일을 만드는 방법에 대한 자세한 내용은 C++ MEX 함수 항목을 참조하십시오.
이 예제에서는 m
×n
구조체 행렬을 입력값으로 받고 다음 필드가 포함된 새로운 1
×1
구조체를 반환합니다.
텍스트 입력값은
m
×n
셀형 배열을 생성합니다.숫자형 입력값(복소수가 아닌 스칼라 값)은 입력값과 같은 클래스 ID(예:
int
,double
등)를 가진 숫자로 구성된m
×n
벡터를 생성합니다.
이 예제를 빌드하려면 명령 프롬프트에 다음을 입력하십시오.
mex phonebook.c
이 프로그램이 어떻게 작동하는지 보려면 다음 구조체를 만드십시오.
friends(1).name = 'Jordan Robert'; friends(1).phone = 3386; friends(2).name = 'Mary Smith'; friends(2).phone = 3912; friends(3).name = 'Stacy Flora'; friends(3).phone = 3238; friends(4).name = 'Harry Alpert'; friends(4).phone = 3077;
MEX 파일을 호출합니다.
phonebook(friends)
ans = name: {1x4 cell } phone: [3386 3912 3238 3077]