В этом примере показано, как записать массивы MATLAB ® в набор научных данных в файле HDF4 .
Добавить пакет в список импорта
Добавить matlab.io.hdf4.* путь к списку импорта.
import matlab.io.hdf4.*Префикс последующих вызовов для функций в matlat.io.hdf4.sd пакет с sd, а не весь путь пакета.
Создать файл HDF4
Создание нового файла HDF4 с помощью matlab.io.hdf4.sd.start функция. Эта функция соответствует подпрограмме API SD, SDstart.
sdID = sd.start('mydata.hdf','create');
sd.start создает файл и возвращает идентификатор файла с именем sdID.
Чтобы открыть существующий файл вместо создания нового, вызовите sd.start с 'write' доступ вместо 'create'.
Создание набора данных HDF4
Создайте набор данных в файле для каждого массива MATLAB, который требуется экспортировать. При записи в существующий набор данных можно перейти к следующему шагу. В этом примере создайте один набор данных для массива выборочных данных, A, с использованием matlab.io.hdf4.sd.create функция. Эта функция соответствует подпрограмме API SD, SDcreate. ds_type аргумент - символьный вектор, определяющий тип данных MATLAB набора данных.
A = [1 2 3 4 5 ; 6 7 8 9 10 ; 11 12 13 14 15]; ds_name = 'A'; ds_type = 'double'; ds_dims = size(A); sdsID = sd.create(sdID,ds_name,ds_type,ds_dims);
sd.create возвращает идентификатор набора данных HDF4 SD, sdsID.
Запись данных MATLAB в файл HDF4
Запись данных в A к набору данных в файле с помощью matlab.io.hdf4.sd.writedata функция. Эта функция соответствует подпрограмме API SD, SDwritedata. start задает отсчитываемый от нуля начальный индекс.
start = [0 0]; sd.writeData(sdsID,start,A);
sd.writeData ставит в очередь операцию записи. Операции в очереди выполняются при закрытии файла HDF4.
Запись данных MATLAB в часть набора данных
Замените вторую строку набора данных вектором B. Использовать start входное значение [1 0] для начала записи во второй строке, первом столбце. start использует индексацию на основе нуля.
B = [9 9 9 9 9]; start = [1 0]; sd.writeData(sdsID,start,B);
Запись метаданных в файл HDF4
Создание глобального атрибута с именем creation_date, со значением, которое является текущей датой и временем. Используйте matlab.io.hdf4.sd.setAttr функция, которая соответствует подпрограмме API SD, SDsetattr.
sd.setAttr(sdID,'creation_date',datestr(now));sd.Attr создает атрибут файла, также называемый глобальным атрибутом, связанный с файлом HDF4, идентифицированным sdID.
Связать предопределенный атрибут, cordsys, к набору данных, идентифицированному sdsID. Возможные значения этого атрибута включают текстовые строки 'cartesian', 'polar', и 'spherical'.
attr_name = 'cordsys'; attr_value = 'polar'; sd.setAttr(sdsID,attr_name,attr_value);
Закрыть набор данных HDF4
Закройте доступ к набору данных с помощью matlab.io.hdf4.sd.endAccess функция. Эта функция соответствует подпрограмме API SD, SDendaccess. Перед закрытием файла необходимо закрыть доступ ко всем наборам данных в и HDF4 файле.
sd.endAccess(sdsID);
Закрыть файл HDF4
Закройте файл HDF4 с помощью matlab.io.hdf4.sd.close функция. Эта функция соответствует подпрограмме API SD, SDend.
sd.close(sdID);
При закрытии файла HDF4 выполняются все операции записи, поставленные в очередь с помощью SDwritedata.
MATLAB ® поддерживает функции утилит, упрощающие использование HDF4 в среде MATLAB.
Используйте функцию шлюза к API утилиты MATLAB HDF4, hdfmlи укажите имя listinfo в качестве аргумента для просмотра всех открытых в данный момент идентификаторов HDF4. MATLAB обновляет этот список при каждом создании или закрытии идентификаторов HDF. В этом примере открыты только два идентификатора.
hdfml('listinfo')
No open RI identifiers No open GR identifiers No open grid identifiers No open grid file identifiers No open annotation identifiers No open AN identifiers Open scientific dataset identifiers: 262144 Open scientific data file identifiers: 393216 No open Vdata identifiers No open Vgroup identifiers No open Vfile identifiers No open point identifiers No open point file identifiers No open swath identifiers No open swath file identifiers No open access identifiers No open file identifiers
Закройте все открытые в данный момент идентификаторы HDF4 в одном вызове с помощью функции шлюза к API утилиты MATLAB HDF4, hdfml. Укажите имя closeall подпрограмма в качестве аргумента:
hdfml('closeall')hdfml | sd.close | sd.create | sd.endAccess | sd.setAttr | sd.start | sd.writeData