Иерархический Формат данных (HDF4) является машинно-независимым стандартом общего назначения для того, чтобы хранить научные данные в файлах, разработанных Национальным центром суперкомпьютерных приложений (NCSA). Для получения дополнительной информации об этих форматах файлов, считайте документацию HDF на веб-сайте HDF (www.hdfgroup.org
).
HDF-EOS является расширением HDF4, который был разработан Национальным управлением по аэронавтике и исследованию космического пространства (НАСА) для устройства хранения данных данных, возвращенных в систему наблюдения Земли (EOS). Для получения дополнительной информации об этом расширении HDF4, см. документацию HDF-EOS на веб-сайте НАСА (www.hdfeos.org
).
MATLAB® включает несколько опций для импорта файлов HDF4, обсужденных в следующих разделах.
Для получения информации об импорте данных HDF5, которые являются отдельным, несовместимым форматом, смотрите Импорт Файлы HDF5.
Чтобы импортировать данные от HDF или файла HDF-EOS, можно использовать высокоуровневую функцию MATLAB HDF4 hdfread
. Функция hdfread
обеспечивает программируемый способ импортировать данные от HDF4 или файла HDF-EOS, который все еще скрывает многие детали, которые необходимо знать, используете ли вы низкоуровневые функции HDF, описанные в Импорте Файлы HDF4 Используя Низкоуровневые функции.
В этом разделе описываются их высокоуровневый MATLAB функции HDF, включая
Чтобы экспортировать данные в файл HDF4, необходимо использовать низкоуровневые функции MATLAB 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
, необходимо задать набор данных, который вы хотите считать. Можно задать имя файла и имя набора данных в качестве аргументов, или можно задать структуру, возвращенную функцией hdfinfo
, которая содержит эту информацию. Следующий пример показывает оба метода. Для получения информации о том, как импортировать подмножество данных в наборе данных, смотрите Чтение Подмножества Данных в Наборе данных.
Определите имена наборов данных в файле 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
Считайте набор данных из файла 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