Main Content

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]

관련 항목