Main Content

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.canalyze_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.canalyze_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

관련 항목