Открываем .hdf в Matlab

Мне попались файлы продвинутого формата hdf и нужно было как то открыть имеющиеся в них данные. С самим форматом мы разберёмся как нить в другой раз, наша задача добыть матрицу n*m.

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

Сначала нам нужно добыть информацию о файле

hdfinfo ('file.hdf')

Получится что то типа

ans =

Filename: 'asi-n6250-20060101-v5i.hdf'
SDS: [1x1 struct]

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

b = ans.SDS

Получаем что то типа

Filename: 'file.hdf'
Type: 'Scientific Data Set'
Name: 'ASI Ice Concentration'
Rank: 2
DataType: 'float'
Attributes: [1x2 struct]
Dims: [2x1 struct]
Label: {}
Description: {}
Index: 0

Name это то чего мы добивались. Значит в данном случае мы имеем дело с концентрацией морского льда полученной по алгоритму ASI. Теперь хотелось бы открыть этот датасет. Набираем

data = hdfread ('file.hdf','ASI Ice Concentration');

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