Импорт HDF4 файлов с использованием низкоуровневых функций

В этом примере показов, как считать данные из Научных данных Set в файле HDF4, используя функции в matlat.io.hdf4.sd пакет. В HDF4 терминологии числовые массивы, хранящиеся в файлах HDF4, называются наборами данных.

Добавить пакет в список импорта

Добавьте matlab.io.hdf4.* путь к списку импорта.

import matlab.io.hdf4.*

Последующие вызовы функций в matlat.io.hdf4.sd пакет должен иметь только префикс с sd, а не весь путь к пакету.

Откройте HDF4 файл

Откройте пример HDF4 файл, sd.hdf, и задайте доступ для чтения, используя matlab.io.hdf4.sd.start функция. Эта функция соответствует стандартной программе SD API, SDstart.

sdID = sd.start('sd.hdf','read');

sd.start возвращает HDF4 идентификатор файла SD, sdID.

Получение информации о HDF4 файле

Получите количество наборов данных и глобальных атрибутов в файле, используя matlab.io.hdf4.sd.fileInfo функция. Эта функция соответствует стандартной программе SD API, SDfileinfo.

[ndatasets,ngatts] = sd.fileInfo(sdID)
ndatasets = 4
ngatts = 1

Файл, sd.hdf, содержит четыре набора данных и один глобальный атрибут,

Получение атрибутов из HDF4 файла

Получите содержимое первого глобального атрибута. HDF4 использует индексацию с нулем, поэтому значение индекса 0 задает первый индекс.

HDF4 файлы могут необязательно включать информацию, называемую атрибутами, которая описывает данные, которые содержит файл. Атрибуты, сопоставленные с целым файлом HDF4, являются глобальными атрибутами. Атрибуты, сопоставленные с набором данных, являются локальными атрибутами.

attr = sd.readAttr(sdID,0)
attr = 
'02-Sep-2010 11:13:16'

Выберите наборы данных для импорта

Определите номер индекса набора данных с именем temperature. Затем получите идентификатор этого набора данных.

idx = sd.nameToIndex(sdID,'temperature');
sdsID = sd.select(sdID,idx);

sd.select возвращает HDF4 идентификатор набора данных SD, sdsID.

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

Получите информацию о наборе данных, идентифицированном sdsID использование matlab.io.hdf4.sd.getInfo функция. Эта функция соответствует стандартной программе SD API, SDgetinfo.

[name,dims,datatype,nattrs] = sd.getInfo(sdsID)
name = 
'temperature'
dims = 1×2

    20    10

datatype = 
'double'
nattrs = 11

sd.getInfo возвращает информацию об имени, размере, типе данных и количестве атрибутов набора данных.

Чтение всего набора данных

Считайте все содержимое набора данных, заданное идентификатором набора данных, sdsID.

data = sd.readData(sdsID);

Чтение фрагмента набора данных

Считайте фрагмент набора данных 2 на 4, начиная с первого столбца во второй строке. Используйте matlab.io.hdf4.sd.readData функция, которая соответствует стандартной программе SD API, SDreaddata. The start вход является вектором значений индекса, определяющим местоположение в наборе данных, где вы хотите начать чтение данных. The count вход является вектором, задающим количество элементов для чтения по каждой размерности набора данных.

start = [0 1];
count = [2 4];
data2 = sd.readData(sdsID,start,count)
data2 = 2×4

    21    41    61    81
    22    42    62    82

Закройте HDF4 набор данных

Закройте доступ к набору данных, используя matlab.io.hdf4.sd.endAccess функция. Эта функция соответствует стандартной программе SD API, SDendaccess. Перед закрытием файла необходимо закрыть доступ ко всем наборам данных и HDF4 файлу.

sd.endAccess(sdsID)

Закрыть HDF4 файл

Закройте файл HDF4 с помощью matlab.io.hdf4.sd.close функция. Эта функция соответствует стандартной программе SD API, SDend.

sd.close(sdID)

См. также

| | | | |

Похожие темы

Для просмотра документации необходимо авторизоваться на сайте