Этот пример показывает, как экспортировать данные в CDF-файл с помощью низкоуровневых функций MATLAB® CDF. Функции MATLAB соответствуют стандартным программам в библиотеке CDF C API.
Чтобы использовать низкоуровневые функции CDF MATLAB эффективно, необходимо быть знакомы с интерфейсом CDF C. Кроме того, CDF-файлы не поддерживают закодированные входные параметры non-ASCII. Поэтому имена переменных, имена атрибутов, значения переменных и значения атрибута должны иметь 7-битное кодирование ASCII.
Создайте новый CDF-файл под названием my_file.cdf
с помощью cdflib.create
. Эта функция соответствует стандартной программе API библиотеки CDF C, CDFcreateCDF
.
cdfid = cdflib.create('my_file.cdf');
cdflib.create
возвращает идентификатор файла, cdfid
.
Создайте переменные под названием Time
и Latitude
с помощью cdflib.createVar
. Эта функция соответствует стандартной программе API библиотеки CDF C, CDFcreatezVar
.
time_id = cdflib.createVar(cdfid,'Time','cdf_int4',1,[],true,[]); lat_id = cdflib.createVar(cdfid,'Latitude','cdf_int2',1,181,true,true);
cdflib.createVar
возвращает числовой идентификатор для каждой переменной.
Создайте переменную под названием Image
.
dimSizes = [20 10]; image_id = cdflib.createVar(cdfid,'Image','cdf_int4',1,... dimSizes,true,[true true]);
Запишите данные к первым и вторым записям переменной Time
. Номера записи основаны на нуле. Функция cdflib.putVarRecordData
соответствует стандартной программе API библиотеки CDF C, CDFputzVarRecordData
.
cdflib.putVarRecordData(cdfid,time_id,0,int32(23)); cdflib.putVarRecordData(cdfid,time_id,1,int32(24));
Запишите данные к переменной Latitude
.
data = int16([-90:90]); recspec = [0 1 1]; dimspec = { 0 181 1 }; cdflib.hyperPutVarData(cdfid,lat_id,recspec,dimspec,data);
Запишите данные к переменной Image
.
recspec = [0 3 1]; dimspec = { [0 0], [20 10], [1 1] }; data = reshape(int32([0:599]), [20 10 3]); cdflib.hyperPutVarData(cdfid,image_id,recspec,dimspec,data);
Создайте глобальный атрибут под названием TITLE
с помощью cdflib.createAttr
. Эта функция соответствует стандартной программе API библиотеки CDF C, CDFcreateAttr
.
titleAttrNum = cdflib.createAttr(cdfid,'TITLE','global_scope');
cdflib.createAttr
возвращает числовой идентификатор для атрибута. Номера атрибутов начинаются с нуля.
Запишите значения в записи в глобальном атрибуте.
cdflib.putAttrEntry(cdfid,titleAttrNum,0,'CDF_CHAR','cdf Title'); cdflib.putAttrEntry(cdfid,titleAttrNum,1,'CDF_CHAR','Author');
Создайте атрибуты, сопоставленные с переменными в CDF-файле.
fieldAttrNum = cdflib.createAttr(cdfid,'FIELDNAM','variable_scope'); unitsAttrNum = cdflib.createAttr(cdfid,'UNITS','variable_scope');
Запишите в атрибуты переменной Time
.
cdflib.putAttrEntry(cdfid,fieldAttrNum,time_id,... 'CDF_CHAR','Time of observation'); cdflib.putAttrEntry(cdfid,unitsAttrNum,time_id,... 'CDF_CHAR','Hours');
Получите информацию о файле с помощью cdflib.inquire
. Эта функция соответствует стандартным программам API библиотеки CDF C, CDFinquireCDF
и CDFgetNumgAttributes
.
info = cdflib.inquire(cdfid)
info = struct with fields:
encoding: 'IBMPC_ENCODING'
majority: 'ROW_MAJOR'
maxRec: 2
numVars: 3
numvAttrs: 2
numgAttrs: 1
cdflib.inquire
возвращает массив структур, который включает информацию о кодировании данных и количестве переменных и атрибутов в файле.
Закройте CDF-файл с помощью cdflib.close
. Эта функция соответствует стандартной программе API библиотеки CDF C, CDFcloseCDF
. Необходимо закрыть CDF, чтобы гарантировать, что все модификации, которые вы сделали начиная с открытия CDF, записаны в файл.
cdflib.close(cdfid);