이 페이지의 최신 내용은 아직 번역되지 않았습니다. 최신 내용은 영문으로 볼 수 있습니다.

matfile

변수를 메모리로 불러오지 않고 MAT 파일에서 직접 액세스 및 변경

설명

예제

m = matfile(filename)은 MAT 파일 filename에 연결된 MAT 파일 객체 m을 만듭니다. 이 객체를 사용하면 변수를 메모리에 불러올 필요 없이 MAT 파일에서 직접 변수에 액세스하고 변경할 수 있습니다.

matfile 함수에서 제공하는 부분 불러오기 및 저장 기능은 항상 전체 변수를 대상으로 동작하는 load 명령과 save 명령에 비해 더 적은 메모리를 필요로 합니다.

예제

m = matfile(filename,'Writable',isWritable)은 파일에 대한 쓰기 액세스를 활성화하거나 비활성화합니다.

예제

모두 축소

예제 파일 topography.mat에서 변수 topo를 불러옵니다.

예제 MAT 파일 topography.mat를 엽니다.

filename = 'topography.mat';
m = matfile(filename);

MAT 파일에서 변수 topo를 읽습니다.

topo = m.topo;

MATLAB®은 전체 변수 topo를 작업 공간으로 불러옵니다.

20x20 예제 배열 x를 생성하고 myFile.mat라는 MAT 파일에 저장합니다.

x = magic(20);
save('myFile.mat','x');

기존 MAT 파일 myFile.mat에 연결된 MAT 파일 객체를 만듭니다. Writabletrue로 설정하여 MAT 파일에 대한 쓰기 권한을 활성화합니다.

m = matfile('myFile.mat','Writable',true);

15x15 예제 배열 y를 생성합니다.

y = magic(15);

y를 MAT 파일에 저장합니다. 구조체형 배열의 필드에 액세스하는 것과 마찬가지로, 점 표기법을 사용하여 MAT 파일에 변수를 지정합니다.

m.y = y;

MATLAB®이 변수 y를 파일에 추가합니다.

MAT 파일 myFile.mat에 저장된 모든 변수를 표시합니다.

whos('-file','myFile.mat')
  Name       Size            Bytes  Class     Attributes

  x         20x20             3200  double              
  y         15x15             1800  double              

MAT 파일 변수의 특정 요소에 액세스합니다.

새 MAT 파일 myFile2.mat를 엽니다.

m = matfile('myFile2.mat');

20x20 예제 배열을 myFile2.mat의 변수 y의 일부에 저장합니다. 구조체형 배열의 필드에 액세스하는 것과 마찬가지로, 점 표기법을 사용하여 MAT 파일에 변수를 지정합니다.

m.y(81:100,81:100) = magic(20);

MATLAB®이 20x20 배열을 인덱스 (81:100,81:100)으로 지정된 y의 요소에 삽입합니다.

배열 y의 서브셋을 새 작업 공간 변수 z로 읽어옵니다.

z = m.y(85:94,85:94);

MATLAB이 MAT 파일에서 인덱스 (85:94,85:94)로 지정된 10x10 부분배열을 작업 공간 변수 z로 읽어옵니다.

변수의 크기를 확인한 다음 각 열의 평균을 계산합니다.

예제 MAT 파일 stocks.mat를 엽니다.

filename = 'stocks.mat';
m = matfile(filename);

stocks.mat에서 변수 stocks의 크기를 확인합니다.

[nrows,ncols] = size(m,'stocks');

변수 stocks의 각 열에 대한 평균을 계산합니다.

avgs = zeros(1,ncols);
for i = 1:ncols
    avgs(i) = mean(m.stocks(:,i));
end

MAT 파일을 열 때 Writabletrue로 설정하여 MAT 파일 myFile.mat에 대한 쓰기 권한을 활성화합니다.

filename = 'myFile.mat';
m = matfile(filename,'Writable',true);

또는 MAT 파일을 연 후에 개별 단계로 Properties.Writable을 설정합니다.

m.Properties.Writable = true;

입력 인수

모두 축소

MAT 파일의 이름으로, 문자형 벡터로 지정됩니다. 파일이 현재 폴더에 있지 않은 경우 filename에는 전체 경로나 상대 경로가 포함되어야 합니다. filename에 확장자가 포함되어 있지 않으면 matfile의 끝에 .mat가 추가됩니다.

파일이 없는 경우 matfile은 변수에 처음 대입할 때 버전 7.3 MAT 파일을 만듭니다.

matfile은 버전 7.3 형식의 MAT 파일에 대해서만 효율적인 부분 불러오기 및 저장을 지원합니다. 버전 7(현재 디폴트) 이하의 MAT 파일에서 변수의 요소를 참조할 경우 MATLAB®은 경고를 표시하고 임시로 변수의 전체 내용을 불러옵니다.

예: 'myFile.mat'

데이터형: char

MAT 파일에 대한 쓰기 액세스로, true 또는 false로 지정됩니다.

  • true를 지정하면 MAT 파일에 저장할 수 있습니다. 파일이 읽기 전용인 경우 MATLAB은 fileattrib 함수를 사용하여 시스템 권한을 변경합니다.

  • false를 지정하면 MAT 파일에 저장할 수 없습니다. MATLAB은 시스템 권한을 변경하지 않습니다.

디폴트 값은 새 파일의 경우 true이고, 기존 파일의 경우 false입니다.

데이터형: logical

출력 인수

모두 축소

MAT 파일에 연결된 MAT 파일 객체입니다.

구조체형 배열의 필드에 액세스하는 것과 마찬가지로, 점 표기법을 사용하여 MAT 파일의 변수에 액세스합니다.

  • MAT 파일에서 m에 대응하는 변수 varName의 일부를 불러오려면 다음을 호출하십시오.

    loadedData = m.varName(indices);

  • m에 대응하는 변수 varName의 일부를 MAT 파일로 저장하려면 다음을 호출하십시오.

    m.varName(indices) = dataToSave;

변수에 액세스할 때 모든 차원의 인덱스를 지정합니다. 인덱스는 단일 값이거나, 균일한 간격으로 점차 증가하는 값의 범위이거나, 콜론 (:)일 수 있습니다. 예를 들어 다음과 같습니다.

m.varName(100:500,200:600)
m.varName(:,501:1000)
m.varName(1:2:1000,80)

제한 사항

  • matfile은 선형 인덱싱을 지원하지 않습니다. 따라서 모든 차원에 대해 인덱스를 지정해야 합니다.

  • matfile은 다음에 대한 요소 참조를 지원하지 않습니다.

    • 테이블의 변수

    • 셀형 배열의 셀

    • 구조체형 배열의 필드

    • 사용자 정의 클래스

    • 희소 배열

  • 복소수 값은 실수 배열의 인덱스 부분에 대입할 수 없습니다.

  • m 출력값을 사용하여 함수 핸들을 계산할 수 없습니다. 예를 들어, MAT 파일에 함수 핸들 myfunc가 포함된 경우 구문 m.myfunc()는 함수 핸들로의 요소를 참조하려 시도하지만 함수를 불러오지는 않습니다.

  • 효율적인 부분 불러오기 및 저장을 수행하려면 버전 7.3 MAT 파일이 필요합니다. 버전 7.3 MAT 파일을 만들려면 save 함수를 '-v7.3' 옵션과 함께 호출하십시오. 예를 들어, 기존 MAT 파일 durer.mat를 버전 7.3으로 변환하려면 다음을 호출하십시오.

    load('durer.mat');
    save('mycopy_durer.mat','-v7.3');

  • 인덱스의 일부로 end 키워드를 사용하면 MATLAB이 전체 변수를 메모리로 불러오게 됩니다. 매우 큰 변수의 경우, 이 불러오기 작업을 수행하면 Out of Memory 오류가 발생합니다. 따라서 end를 사용하는 대신 다음과 같이 size 메서드를 사용하여 변수 myVar의 크기를 확인하십시오.

    sizeMyVar = size(m,'myVar')

R2011b에 개발됨