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