Main Content

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

프로그래밍 방식으로 HDF4 파일 가져오기

개요

NCSA(National Center for Supercomputing Application)에서 개발한 HDF4(Hierarchical Data Format)는 과학 데이터를 파일에 저장하기 위한 범용 표준으로 시스템에 상관없이 사용할 수 있습니다. 이 파일 형식에 대한 자세한 내용은 HDF 웹 사이트(www.hdfgroup.org)에서 HDF 문서를 참조하십시오.

HDF-EOS는 NASA(National Aeronautics and Space Administration)가 EOS(Earth Observing System)에서 반환되는 데이터를 저장하기 위해 개발한 HDF4의 확장입니다. HDF4를 확장한 이 개념에 대한 자세한 내용은 NASA 웹 사이트(www.hdfeos.org)에서 HDF-EOS 문서를 참조하십시오.

MATLAB®에는 HDF4 파일을 가져올 수 있는 여러 가지 옵션이 있으며 이에 대해서는 다음 섹션에서 설명합니다.

참고

별도의 호환되지 않는 형식을 가지고 있는 HDF5 데이터 가져오기에 대한 정보는 HDF5 파일 가져오기 항목을 참조하십시오.

MATLAB HDF4 하이 레벨 함수 사용하기

HDF 또는 HDF-EOS 파일에서 데이터를 가져오려면 MATLAB HDF4 하이 레벨 함수 hdfread를 사용할 수 있습니다. hdfread 함수는 HDF4 파일 또는 HDF-EOS 파일에서 프로그래밍 방식으로 데이터를 가져오게 해 줍니다. HDF4 파일 또는 HDF-EOS 파일에는 Import HDF4 Files Using Low-Level Functions 항목에 설명된 로우 레벨 HDF 함수를 사용할 때 알아야 하는 많은 세부 정보가 포함되어 있습니다.

이 섹션에서는 다음과 같은 이러한 하이 레벨 MATLAB HDF 함수에 대해 다룹니다.

데이터를 HDF4 파일로 내보내려면 MATLAB HDF4 로우 레벨 함수를 사용해야 합니다.

hdfinfo를 사용하여 HDF4 파일에 대한 정보 가져오기

HDF4 파일의 내용에 대한 정보를 가져오려면 hdfinfo 함수를 사용하십시오. hdfinfo 함수는 파일과 파일 내 데이터에 대한 정보를 포함하는 구조체를 반환합니다.

이 예제에서는 MATLAB에 포함된 샘플 HDF4 파일에 대한 정보를 반환합니다.

info = hdfinfo('example.hdf')
info = 

      Filename: 'matlabroot\example.hdf'
    Attributes: [1x2 struct]
        Vgroup: [1x1 struct]
           SDS: [1x1 struct]
         Vdata: [1x1 struct]

파일에 저장된 데이터 세트에 대한 정보를 가져오려면 SDS 필드를 확인하십시오.

hdfread를 사용하여 HDF4 파일에서 데이터 가져오기

hdfread 함수를 사용하려면 읽어올 데이터 세트를 지정해야 합니다. 파일 이름과 데이터 세트 이름을 인수로 지정하거나, 이 정보가 포함된 구조체(hdfinfo 함수에 의해 반환됨)를 지정할 수 있습니다. 다음 예제에서는 두 방법을 모두 보여줍니다. 데이터 세트의 데이터 중 일부를 가져오는 방법에 대한 정보는 데이터 세트의 데이터 중 일부를 읽어오기 항목을 참조하십시오.

  1. hdfinfo 함수를 사용하여 HDF4 파일의 데이터 세트 이름을 확인합니다.

    info = hdfinfo('example.hdf')
    
    info = 
    
          Filename: 'matlabroot\example.hdf'
        Attributes: [1x2 struct]
            Vgroup: [1x1 struct]
               SDS: [1x1 struct]
             Vdata: [1x1 struct]

    파일의 데이터 세트에 대한 이름과 기타 정보를 확인하려면 SDS 필드의 내용을 확인하십시오. SDS 구조체의 Name 필드에 데이터 세트의 이름이 나와 있습니다.

    dsets = info.SDS
    
    dsets = 
    
           Filename: 'example.hdf'
               Type: 'Scientific Data Set'
               Name: 'Example SDS'
               Rank: 2
           DataType: 'int16'
         Attributes: []
               Dims: [2x1 struct]
              Label: {}
        Description: {}
              Index: 0
  2. hdfread 함수를 사용하여 HDF4 파일에서 데이터 세트를 읽어옵니다. 데이터 세트의 이름을 함수에 대한 파라미터로 지정합니다. 참고로, 데이터 세트 이름은 대/소문자를 구분합니다. 이 예제에서는 다음과 같이 16x5 배열을 반환합니다.

    dset = hdfread('example.hdf', 'Example SDS')
    
    dset =
    
          3      4      5      6      7
          4      5      6      7      8
          5      6      7      8      9
          6      7      8      9     10
          7      8      9     10     11
          8      9     10     11     12
          9     10     11     12     13
         10     11     12     13     14
         11     12     13     14     15
         12     13     14     15     16
         13     14     15     16     17
         14     15     16     17     18
         15     16     17     18     19
         16     17     18     19     20
         17     18     19     20     21
         18     19     20     21     22

    또는, 이 정보가 포함된 구조체(hdfinfo에 의해 반환됨)의 특정 필드를 지정할 수 있습니다. 예를 들어, 과학 데이터 세트를 읽어오려면 SDS 필드를 사용하십시오.

    dset = hdfread(info.SDS);
    

데이터 세트의 데이터 중 일부를 읽어오기.  데이터 세트의 일부를 읽어오려면 선택적 파라미터 'index'를 사용해야 합니다. 인덱스 파라미터의 값은 데이터 세트에서 읽기를 시작할 위치, 건너뛰기 간격(예: 데이터 항목을 하나씩 건너뛰며 읽기), 읽을 데이터의 양(예: 각 치수의 길이)을 지정하는 3개 벡터로 구성된 셀형 배열입니다. HDF4 용어에서는 이러한 파라미터를 start, strideedge 값이라고 합니다.

예를 들어, 다음 코드는

  • 세 번째 행, 세 번째 열의 데이터를 읽기 시작합니다([3 3]).

  • 배열의 모든 요소를 읽습니다([]).

  • 10개 행과 2개 열을 읽습니다([10 2]).

    subset = hdfread('Example.hdf','Example SDS',...
                     'Index',{[3 3],[],[10 2 ]})
    
    subset =
    
          7      8
          8      9
          9     10
         10     11
         11     12
         12     13
         13     14
         14     15
         15     16
         16     17