Импорт файлов HDF4 Programatically

Обзор

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

HDF-EOS является расширением HDF4, который был разработан Национальным управлением по аэронавтике и исследованию космического пространства (НАСА) для устройства хранения данных данных, возвращенных в систему наблюдения Земли (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