Экспорт в CDF-файлы

Этот пример показывает, как экспортировать данные в CDF-файл с помощью низкоуровневых функций MATLAB® CDF. Функции MATLAB соответствуют стандартным программам в библиотеке CDF C API.

Чтобы использовать низкоуровневые функции CDF MATLAB эффективно, необходимо быть знакомы с интерфейсом CDF C. Кроме того, CDF-файлы не поддерживают закодированные входные параметры non-ASCII. Поэтому имена переменных, имена атрибутов, значения переменных и значения атрибута должны иметь 7-битное кодирование ASCII.

Создание нового CDF-файла

Создайте новый CDF-файл под названием my_file.cdf с помощью cdflib.create. Эта функция соответствует стандартной программе API библиотеки CDF C, CDFcreateCDF.

cdfid = cdflib.create('my_file.cdf');

cdflib.create возвращает идентификатор файла, cdfid.

Создание переменных в CDF-файле

Создайте переменные под названием 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');

Получение информации о CDF-файле

Получите информацию о файле с помощью 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-файла

Закройте CDF-файл с помощью cdflib.close. Эта функция соответствует стандартной программе API библиотеки CDF C, CDFcloseCDF. Необходимо закрыть CDF, чтобы гарантировать, что все модификации, которые вы сделали начиная с открытия CDF, записаны в файл.

cdflib.close(cdfid);

Смотрите также

Внешние веб-сайты