В этом примере показано, как записать массивы MATLAB® в Набор научных данных в файле HDF4.
Добавление пакета к списку импорта
Добавьте matlab.io.hdf4.*
путь к списку импорта.
import matlab.io.hdf4.*
Снабдите префиксом последующие вызовы функций в matlat.io.hdf4.sd
пакет с sd
, вместо целого пути к пакету.
Создайте файл HDF4
Создайте новый файл HDF4 с помощью matlab.io.hdf4.sd.start
функция. Эта функция соответствует стандартной программе SD API, SDstart
.
sdID = sd.start('mydata.hdf','create');
sd.start
создает файл и возвращает идентификатор файла под названием sdID
.
Чтобы открыть существующий файл вместо того, чтобы создать новый, вызовите sd.start
с 'write'
доступ вместо 'create'
.
Создайте набор данных HDF4
Создайте набор данных в файле для каждого массива MATLAB, который вы хотите экспортировать. Если вы пишете в существующий набор данных, можно перейти непосредственно к следующему шагу. В этом примере создайте один набор данных для массива выборочных данных, A
, использование matlab.io.hdf4.sd.create
функция. Эта функция соответствует стандартной программе SD API, 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
функция. Эта функция соответствует стандартной программе SD API, 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
функция, которая соответствует стандартной программе SD API, SDsetattr
.
sd.setAttr(sdID,'creation_date',datestr(now));
sd.Attr
создает атрибут файла, также названный глобальным атрибутом, сопоставленным с файлом HDF4, идентифицированным sdID
.
Сопоставьте предопределенный атрибут, cordsys
, к набору данных, идентифицированному sdsID
. Возможные значения этого атрибута включают текстовые строки 'cartesian'
полярный
, и 'spherical'
.
attr_name = 'cordsys'; attr_value = 'polar'; sd.setAttr(sdsID,attr_name,attr_value);
Закрытие набора данных 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);
Закрытие файла 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')
sd.start
| sd.create
| sd.writeData
| sd.setAttr
| sd.close
| sd.endAccess
| hdfml