В этом примере показано, как экспортировать данные в CDF-файл с помощью низкоуровневых функций MATLAB ® CDF. Функции MATLAB соответствуют стандартным программам в библиотеке CDF C API.
Чтобы эффективно использовать низкоуровневые функции MATLAB CDF, необходимо ознакомиться с интерфейсом CDF C. Кроме того, CDF-файлы не поддерживают кодированные без ASCII входы. Поэтому имена переменных, имена атрибутов, значения переменных и значения атрибутов должны иметь 7-битную кодировку ASCII.
Создайте новый CDF-файл с именем my_file.cdf
использование cdflib.create
. Эта функция соответствует стандартной программе CDF library C API, CDFcreateCDF
.
cdfid = cdflib.create('my_file.cdf');
cdflib.create
возвращает идентификатор файла, cdfid
.
Создайте переменные с именем Time
и Latitude
использование cdflib.createVar
. Эта функция соответствует стандартной программе CDF library C API, 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
переменная. Номера записи начинаются с нуля. The cdflib.putVarRecordData
функция соответствует стандартной программе CDF library C API, 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
. Эта функция соответствует стандартной программе CDF library C API, 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
. Эта функция соответствует стандартным программам CDF library C API, 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
. Эта функция соответствует стандартной программе CDF library C API, CDFcloseCDF
. Необходимо закрыть CDF, чтобы гарантировать запись всех изменений, внесенных вами с момента открытия CDF, в файл.
cdflib.close(cdfid);