Импортируйте файлы HDF4 программно

Обзор

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