exponenta event banner

hdfread

Считывание данных из файла HDF4 или HDF-EOS

Синтаксис

data = hdfread(filename, datasetname)
data = hdfread(hinfo)
data = hdfread(...,param,value,...)
data = hdfread(filename,EOSname,param,value,...)
[data,map] = hdfread(...)

Описание

data = hdfread(filename, datasetname) возвращает все данные в наборе данных, указанном datasetname из файла HDF4 или HDF-EOS, указанного filename. Чтобы определить имя набора данных в файле HDF4, используйте hdfinfo функция.

Примечание

hdfread может использоваться в файлах HDF версии 4.x или HDF-EOS версии 2.x. Для чтения данных из файла HDF5 используйте h5read.

data = hdfread(hinfo) возвращает все данные в наборе данных, указанном структуройhinfo, возвращенный hdfinfo функция. Укажите поле в поле hinfo структуру, которая относится к определенному типу набора данных, и использовать индексирование, чтобы указать, какой набор данных, когда их более одного. Дополнительные сведения см. в разделе Указание набора данных для чтения.

data = hdfread(...,param,value,...) возвращает подмножества данных в соответствии с указанными парами параметров и значений. Для поиска допустимых параметров и значений для различных типов наборов данных см. таблицы ниже.

data = hdfread(filename,EOSname,param,value,...) подмножества поля данных из точки HDF-EOS, сетки или свата, указанные EOSname.

[data,map] = hdfread(...) возвращает изображение data и карта цветов map для 8-битного растрового изображения.

Параметры подстановки

В следующих таблицах показаны параметры подстановки, которые можно использовать с hdfread функция для определенных типов данных HDF4. Эти типы данных:

Обратите внимание на следующее:

  • Если для параметра требуется несколько значений, используйте массив ячеек для хранения значений. Например, 'Index' параметр требует трех значений: start, stride, и edge. Заключите эти значения в фигурные скобки как массив ячеек.

    hdfread(..., 'Index', {start,stride,edge})
  • Все значения, являющиеся индексами, основаны на 1.


Параметры подстановки для наборов данных HDF Scientific Data (SD)

При работе с файлами HDF SD hdfread поддерживает параметры, перечисленные в этой таблице.

Параметр

Описание

'Index'

Массив трехэлементных ячеек, {start,stride,edge}, указывая местоположение, диапазон и значения, которые будут считываться из набора данных

  • start - Массив на основе 1, указывающий позицию в файле для начала чтения

    По умолчанию: 1, начиная с первого элемента каждого размера. Указанные значения не должны превышать размер любого измерения набора данных.

  • stride - массив на основе 1, определяющий интервал между считываемыми значениями;

    По умолчанию: 1, прочтите каждый элемент набора данных.

  • edge - массив на основе 1, задающий длину каждого размера для чтения;

    По умолчанию: массив, содержащий длины соответствующих размеров

Например, этот код считывает набор данных Example SDS из файла HDF example.hdf. 'Index' параметр указывает, что hdfread начните считывать данные в начале каждого измерения, считывайте до конца каждого измерения, но считывайте только каждое другое значение данных в первом измерении.

data = hdfread('example.hdf','Example SDS','Index',{[],[2 1],[]})

Параметры подстановки для наборов данных HDF

При работе с файлами HDF Vdata hdfread поддерживает эти параметры.

Параметр

Описание

'Fields'

Вектор символов или строковый скаляр, указывающий имя считываемого поля. При указании нескольких имен полей используйте массив ячеек из символьных векторов или строковый массив.

'FirstRecord'

Число на основе 1, указывающее запись, с которой начинается чтение

'NumRecords'

Число, указывающее общее количество считываемых записей

Например, этот код считывает набор Vdata Example Vdata из файла HDF example.hdf.

data = hdfread('example.hdf','Example Vdata','FirstRecord', 2,'NumRecords', 5)

Параметры подстановки для данных сетки HDF-EOS

При работе с данными сетки HDF-EOS hdfread поддерживает три типа параметров:

  • Обязательные параметры

  • Дополнительные параметры

  • Взаимоисключающие параметры - можно указать только один из этих параметров в вызове hdfread, и нельзя использовать эти параметры в сочетании с любым дополнительным параметром.

    Параметр

    Описание

    Обязательный параметр

    'Fields'

    Вектор символов или строковый скаляр, указывающий считываемое поле. Для набора данных Grid можно указать только одно имя поля.

    Взаимоисключающие необязательные параметры

    'Index'

    Массив трехэлементных ячеек, {start,stride,edge}, указывая местоположение, диапазон и значения, которые будут считываться из набора данных

    start - Массив, указывающий позицию в файле для начала чтения

    По умолчанию: 1, начиная с первого элемента каждого размера. Значения не должны превышать размер любого измерения набора данных.

    stride - массив, указывающий интервал между считываемыми значениями;

    По умолчанию: 1, прочтите каждый элемент набора данных.

    edge - массив, указывающий длину каждого размера для чтения;

    По умолчанию: массив, содержащий длины соответствующих размеров

    'Interpolate'

    Массив двухэлементных ячеек, {longitude,latitude}задание точек долготы и широты, определяющих область для билинейной интерполяции. Каждый элемент представляет собой вектор длиной N, задающий координаты долготы и широты.

    'Pixels'

    Массив двухэлементных ячеек, {longitude,latitude}задание координат долготы и широты, определяющих область. Каждый элемент представляет собой вектор длиной N, задающий координаты долготы и широты. Эта область преобразуется в строки и столбцы пикселов с началом координат в левом верхнем углу сетки.

    Примечание: Это пиксельный эквивалент чтения 'Box' регион.

    'Tile'

    Вектор, задающий координаты считываемой плитки для файлов сетки HDF-EOS, поддерживающих плитки

    Дополнительные параметры

    'Box'

    Массив двухэлементных ячеек, {longitude,latitude}задание координат долготы и широты, определяющих область. longitude и latitude - каждый двухэлементный вектор, задающий координаты долготы и широты.

    'Time'

    Массив двухэлементных ячеек, [start stop], где start и stop - это числа, определяющие начальную и конечную точки в течение определенного периода времени.

    'Vertical'

    Массив двухэлементных ячеек, {dimension, range}

    dimension - символьный вектор или строковый скаляр, указывающий имя поля набора данных, из которого выполняется чтение. Для набора данных Grid можно указать только одно имя поля.

    range - Двухэлементный массив, задающий минимальный и максимальный диапазон для подмножества. Если dimension является именем измерения, то range задает диапазон извлекаемых элементов. Если dimension является именем поля, то range задает диапазон извлекаемых значений.

    'Vertical' подмножество может использоваться отдельно или совместно с 'Box' или 'Time'. Для подмножества области вдоль нескольких размеров вертикальное подмножество можно использовать до восьми раз за один вызов hdfread.

Например,

data = hdfread('grid.hdf','PolarGrid','Fields','ice_temp','Index', {[5 10],[],[15 20]})

Параметры подстановки для данных точек HDF-EOS

При работе с данными точки HDF-EOS hdfread имеет два обязательных и три необязательных параметра.

Параметр

Описание

Обязательные параметры

'Fields'

Вектор символов или строковый скаляр, содержащий имя считываемого поля набора данных. Для нескольких имен полей используйте массив ячеек из символьных векторов или строковый массив.

'Level'

Число на основе 1, указывающее уровень для считывания в наборе данных точки HDF-EOS

Взаимоисключающие необязательные параметры

'Box'

Массив двухэлементных ячеек, {longitude,latitude}задание координат долготы и широты, определяющих область. longitude и latitude - каждый двухэлементный вектор, задающий координаты долготы и широты.

'RecordNumbers'

Вектор, указывающий считываемые номера записей

'Time'

Массив двухэлементных ячеек, [start stop], где start и stop - числа, определяющие начало и конечную точку на определенный период времени;

Например,

hdfread(...,'Fields',{field1, field2},...
            'Level',level,'RecordNumbers',[1:50, 200:250])

Параметры подстановки для данных Swath HDF-EOS

При работе с данными HDF-EOS Swath hdfread поддерживает три типа параметров:

  • Обязательные параметры

  • Дополнительные параметры

  • Взаимоисключающие

При вызове можно использовать только один из взаимоисключающих параметров hdfread, и нельзя использовать эти параметры в сочетании с любым дополнительным параметром.

Параметр

Описание

Обязательный параметр

'Fields'

Вектор символов или строковый скаляр, содержащий имя считываемого поля набора данных. Для набора данных Swath можно указать только одно имя поля.

Взаимоисключающие необязательные параметры

'Index'

Массив трехэлементных ячеек, {start,stride,edge}, указывая местоположение, диапазон и значения, которые будут считываться из набора данных

  • start - Массив, указывающий позицию в файле для начала чтения

    По умолчанию: 1, начиная с первого элемента каждого размера. Значения не должны превышать размер любого измерения набора данных.

  • stride - массив, указывающий интервал между считываемыми значениями;

    По умолчанию: 1, прочтите каждый элемент набора данных.

  • edge - массив, указывающий длину каждого размера для чтения;

    По умолчанию: массив, содержащий длины соответствующих размеров

'Time'

Массив трехэлементных ячеек, {start, stop, mode}, где start и stop укажите начало и конечную точку на определенный период времени, и mode - вектор символов или строковый скаляр, который определяет критерий для включения перекрестной дорожки в область. Поперечная дорожка находится в пределах области, если выполняется любое из следующих условий:

  • Его середина находится в пределах рамки (mode='midpoint').

  • Любая конечная точка находится в пределах поля (mode='endpoint').

Дополнительные параметры

'Box'

Массив трехэлементных ячеек, {longitude, latitude, mode} задание координат долготы и широты, определяющих область. longitude и latitude - двухэлементные векторы, задающие координаты долготы и широты. mode - вектор символов или строковый скаляр, который определяет критерий для включения перекрестной дорожки в область. Поперечная дорожка находится в пределах области, если выполняется любое из следующих условий:

  • Его середина находится в пределах рамки (mode='midpoint').

  • Любая конечная точка находится в пределах поля (mode='endpoint').

  • Любая точка находится в рамке (mode='anypoint').

'Vertical'

Массив двухэлементных ячеек, {dimension, range}

  • dimension - символьный вектор или строковый скаляр, указывающий либо имя измерения, либо имя поля для подмножества данных.

  • range - двухэлементный вектор, задающий минимальный и максимальный диапазон для подмножества. Если dimension является именем измерения, то range задает диапазон извлекаемых элементов. Если dimension является именем поля, то range задает диапазон извлекаемых значений.

    'Vertical' подмножество может использоваться отдельно или совместно с 'Box' или 'Time'. Для подмножества области вдоль нескольких размеров вертикальное подмножество можно использовать до восьми раз за один вызов hdfread.

Например,

hdfread('swath.hdf', 'Example Swath', 'Fields', 'Temperature', ...
         'Time', {5000, 6000, 'midpoint'})

Примеры

свернуть все

Укажите имя HDF-файла и имя набора данных. В этом примере считывается набор данных с именем temperature из образца файла HDF.

data = hdfread('sd.hdf','temperature');

Звонить hdfinfo для получения информации о содержимом HDF-файла.

fileinfo = hdfinfo('sd.hdf')
fileinfo = struct with fields:
      Filename: '/mathworks/devel/bat/BR2021ad/build/matlab/toolbox/matlab/imagesci/sd.hdf'
    Attributes: [1x1 struct]
           SDS: [1x2 struct]
         Vdata: [1x1 struct]

Извлеките структуру, содержащую информацию об определенном наборе данных, который требуется импортировать, из данных, возвращенных hdfinfo. В этом примере используется структура в SDS поле для извлечения набора научных данных.

sds_info = fileinfo.SDS(2)
sds_info = struct with fields:
       Filename: '/mathworks/devel/bat/BR2021ad/build/matlab/toolbox/matlab/imagesci/sd.hdf'
           Type: 'Scientific Data Set'
           Name: 'temperature'
           Rank: 2
       DataType: 'double'
     Attributes: [1x11 struct]
           Dims: [2x1 struct]
          Label: {}
    Description: {}
          Index: 1

Передать эту структуру в hdfread для импорта данных из набора данных.

data = hdfread(sds_info);

Считывание данных из поля глобальной сетки HDF-EOS, TbOceanRain, в примере файла, example.hdf.

data1 = hdfread('example.hdf','MonthlyRain','Fields','TbOceanRain');

Считывайте данные для северного полушария для того же поля. Используйте Box для указания координат долготы и широты для этой области.

data2 = hdfread('example.hdf','MonthlyRain', ...
'Fields','TbOceanRain', ...
'Box', {[0 360],[0 90]});

Получение информации о файле примера, example.hdf.

fileinfo = hdfinfo('example.hdf');

Получение информации о наборе научных данных в example.hdf.

data_set_info = fileinfo.SDS;

Проверьте размер набора данных.

data_set_info.Dims.Size
ans = 16
ans = 5

Считывание подмножества данных в наборе данных с помощью 'index' параметр с hdfread. В этом примере задается начальный индекс [3 3], интервал 1 между значениями ([] значение по умолчанию 1) и длиной 10 строк и 2 столбца.

data = hdfread(data_set_info,'Index',{[3 3],[],[10 2]});
data(:,1)
ans = 10x1 int16 column vector

    7
    8
    9
   10
   11
   12
   13
   14
   15
   16

data(:,2)
ans = 10x1 int16 column vector

    8
    9
   10
   11
   12
   13
   14
   15
   16
   17

Используйте Vdata поле из информации, возвращенной hdfinfo для считывания трех полей данных, Idx, Temp, и Dewpt.

s = hdfinfo('example.hdf'); 
data = hdfread(s.Vdata(1),'Fields',{'Idx','Temp','Dewpt'})
data=3×1 cell array
    {[  1 2 3 4 5 6 7 8 9 10]}
    {[0 12 3 5 10 -1 3 0 2 1]}
    {[5 5 7 11 7 10 4 14 4 8]}

См. также

Представлен до R2006a