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 может использоваться в версии 4.x HDF файлов или версии 2.x HDF-EOS файлов. Чтобы считать данные из файла HDF5, используйте h5read.

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

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

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

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

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

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

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

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

    hdfread(..., 'Index', {start,stride,edge})
  • Все значения индексов основаны на единицах.


Параметры поднабора для наборов данных Научные данные (SD)

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

Параметр

Описание

'Index'

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

  • start - массив на основе 1, задающий положение в файле для начала чтения

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

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

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

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

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

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

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

Параметры поднабора для наборов VDATA 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 Grid, которые поддержка плитки

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

    '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 Point, hdfread имеет два обязательных параметра и три необязательных параметра.

Параметр

Описание

Необходимые параметры

'Fields'

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

'Level'

1 номер на основе, определяющий, с какого уровня считывать в наборе данных HDF-EOS Point

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

'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