exponenta event banner

Программный импорт файлов HDF4

Обзор

Иерархический формат данных (HDF4) - универсальный, машинно-независимый стандарт хранения научных данных в файлах, разработанный Национальным центром суперкомпьютерных приложений (NCSA). Дополнительные сведения об этих форматах файлов см. в документации HDF на веб-сайте HDF (www.hdfgroup.org).

HDF-EOS - это расширение HDF4, которое было разработано Национальным управлением по аэронавтике и исследованию космического пространства (NASA) для хранения данных, возвращаемых из Системы наблюдения Земли (EOS). Дополнительные сведения об этом расширении для HDF4 см. в документации HDF-EOS на веб-сайте НАСА (www.hdfeos.org).

MATLAB ® включает несколько вариантов импорта файлов HDF4, описанных в следующих разделах.

Примечание

Сведения об импорте данных HDF5, который является отдельным несовместимым форматом, см. в разделе Импорт файлов HDF5.

Использование функций MATLAB HDF4 высокого уровня

Для импорта данных из файла HDF или HDF-EOS можно использовать функцию высокого уровня MATLAB HDF4 hdfread. hdfread функция обеспечивает программный способ импорта данных из файла HDF4 или HDF-EOS, который по-прежнему скрывает многие сведения, необходимые для использования низкоуровневых функций HDF, описанных в разделе Импорт файлов HDF4 с использованием низкоуровневых функций.

В этом разделе описываются эти высокоуровневые функции MATLAB HDF, включая

Для экспорта данных в файл HDF4 необходимо использовать низкоуровневые функции MATLAB HDF4.

Использование hdfinfo для получения информации о файле HDF4

Для получения информации о содержимом файла HDF4 используйте hdfinfo функция. hdfinfo функция возвращает структуру, содержащую информацию о файле и данные в файле.

В этом примере возвращается информация о примере файла HDF4, включенного в MATLAB:

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. Определите имена наборов данных в файле HDF4, используя hdfinfo функция.

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

    Чтобы определить имена и другую информацию о наборах данных в файле, просмотрите содержимое SDS поле. Name поле в структуре SDS содержит имя набора данных.

    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. Считывание набора данных из файла HDF4 с помощью hdfread функция. Укажите имя набора данных в качестве параметра функции. Обратите внимание, что имя набора данных чувствительно к регистру. В этом примере возвращается массив 16 на 5:

    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' параметр. Значение параметра индекса представляет собой массив ячеек из трех векторов, которые определяют местоположение в наборе данных для начала считывания, интервал пропуска (например, считывание каждого другого элемента данных) и объем данных для считывания (например, длину вдоль каждого измерения). В HDF4 терминологии эти параметры называются значениями начала, шага и края.

Например, этот код

  • Начинает считывание данных в третьей строке, третьем столбце ([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