Main Content

matlab.io.hdf4.sd.setFillMode

네임스페이스: matlab.io.hdf4.sd

파일의 현재 채우기 모드(Fill Mode) 설정

구문

prevmode = setFillMode(sdID,fillmode)

설명

prevmode = setFillMode(sdID,fillmode)는 파일의 이전 채우기 모드를 반환하고 이 모드를 fillmode로 재설정합니다. 이 설정은 sdID로 식별된 파일에 포함된 모든 데이터셋에 적용됩니다.

fillmode에 사용할 수 있는 값은 'fill''nofill'입니다. 'fill'은 디폴트 모드로, 데이터셋을 만들 때 채우기 값(Fill Value)이 기록됨을 나타냅니다. 'nofill'은 채우기 값이 기록되지 않음을 나타냅니다.

고정된 크기의 데이터셋을 만들 때 sd.writeData를 처음 호출하면 fillmode'fill'인 경우 전체 데이터셋이 디폴트 채우기 값이나 사용자 정의 채우기 값으로 채워집니다. 무제한 차원을 가진 데이터셋에서, 새로운 쓰기 작업이 이전 쓰기 작업의 마지막 위치를 넘어 무제한 차원을 따라 발생하는 경우, 이 쓰여진 영역 사이의 배열 위치는 사용자 정의 채우기 값으로 초기화되거나 사용자 정의 채우기 값이 지정되어 있지 않으면 디폴트 채우기 값으로 초기화됩니다.

읽기 작업이 발생하기 전에 모든 데이터셋 값이 기록될 것이 확실하다면 채우기 값을 쓸 필요가 없습니다. 이 경우 sd.setFillMode'nofill'과 함께 호출하면 성능이 향상될 수 있습니다.

이 함수는 HDF 라이브러리 C API의 SDsetfillmode 함수에 대응합니다.

예제

두 개의 부분 레코드를 씁니다. 첫 번째 레코드는 'nofill' 모드에서 쓰고, 두 번째 레코드는 'fill' 모드에서 씁니다.

import matlab.io.hdf4.*
sdID = sd.start('myfile.hdf','create');
sd.setFillMode(sdID,'nofill');
sdsID = sd.create(sdID,'temperature','double',[10 10 0]);
sd.writeData(sdsID,[0 0 0], rand(5,5));
sd.setFillMode(sdID,'fill');
sd.setFillValue(sdsID,-999);
sd.writeData(sdsID,[0 0 1], rand(5,5));
sd.endAccess(sdsID);
sd.close(sdID);