Иерархический Формат данных (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