mxArrays 사용하기
MAT 파일 인터페이스 라이브러리를 사용하면 MAT 파일의 MATLAB® 배열(mxArray
유형)에 액세스할 수 있습니다. C/C++ 애플리케이션에서 mxArray
를 직접 사용하려면 행렬 라이브러리의 함수를 사용하십시오.
mxArray
유형 사용에 대한 예제는 matlabroot
/extern/examples/mex
폴더와 matlabroot
/extern/examples/mx
폴더에서 찾을 수 있습니다. 다음 항목에서는 이러한 MEX 예제를 기반으로 셀과 구조체를 사용하는 C 코드 예제를 보여줍니다. 이 예제에서는 셀형 배열과 구조체형 배열을 읽고 각 배열 요소 내 mxArray
유형에 따라 정보를 표시하는 방법을 보여줍니다.
MEX 예제 중 하나에서 애플리케이션을 만드는 경우 코드를 독립 실행형 애플리케이션에 맞게 조정할 때 도움이 되는 유용한 정보는 다음과 같습니다.
MAT 파일의 예제인
matdgns.c
는 MAT 파일을 열고 읽는 방법을 보여줍니다. 이 예제에 대한 자세한 내용은 C/C++에서 MAT 파일 읽기 항목을 참조하십시오.MEX 예제
explore.c
에는mxClassID
함수를 사용하여 모든 MATLAB 유형을 읽는 함수가 있습니다. 이 예제에 대한 자세한 내용은 데이터형 사용하기 항목을 참조하십시오.일부 MEX 예제에서는 C MEX API 라이브러리
libmex
의 함수(예:mexPrintf
)를 사용합니다.mxArray
를 사용할 때 이러한 함수를 사용할 필요는 없지만 프로그램에서 이러한 함수를 호출하는 경우 MEX 라이브러리에 연결해야 합니다. 이렇게 하려면 링크 명령문에libmex.lib
를 추가하십시오.
MAT 파일에서 구조체 읽기
matreadstructarray.c
예제는 explore.c
의 analyze_structure
함수를 기반으로 합니다. 단순성을 유지하기 위해 이 예제에서는 double
유형의 실수 요소만 처리합니다. 다른 유형의 오류 확인과 처리에 대한 내용은 explore.c
예제를 참조하십시오.
코드를 보려면 MATLAB 편집기에서 파일을 여십시오.
프로그램을 빌드한 후 MAT 파일 testpatient.mat
에서 애플리케이션을 실행합니다.
먼저 구조체 patient
를 만들고 저장합니다.
patient(1).name = 'John Doe'; patient(1).billing = 127.00; patient(1).test = [79 75 73; 180 178 177.5; 172 170 169]; patient(2).name = 'Ann Lane'; patient(2).billing = 28.50; patient(2).test = [68 70 68; 118 118 119; 172 170 169]; save testpatient.mat
billing
필드의 총계를 계산합니다.
!matreadstruct testpatient.mat patient billing
Total for billing: 155.50
MAT 파일에서 셀형 배열 읽기
matreadcellarray.c
예제는 explore.c
의 analyze_cell
함수를 기반으로 합니다.
코드를 보려면 MATLAB 편집기에서 파일을 여십시오.
프로그램을 빌드한 후 MAT 파일 testcells.mat
에서 애플리케이션을 실행합니다.
먼저 3개의 셀형 변수를 만들고 저장합니다.
cellvar = {'hello'; [2 3 4 6 8 9]; [2; 4; 5]}; structvar = {'cell with a structure'; patient; [2; 4; 5]}; multicellvar = {'cell with a cell'; cellvar; patient}; save testcells.mat cellvar structvar multicellvar
셀 cellvar
의 내용에 대한 mxArray
유형을 표시합니다.
!matreadcell testcells.mat cellvar
0: string 1: numeric class 2: numeric class