Main Content

Export to CDF Files

This example shows how to export data to a CDF file using MATLAB® CDF low-level functions. The MATLAB functions correspond to routines in the CDF C API library.

To use the MATLAB CDF low-level functions effectively, you must be familiar with the CDF C interface. Also, CDF files do not support non-ASCII encoded inputs. Therefore, variable names, attributes names, variable values, and attribute values must have 7-bit ASCII encoding.

Create New CDF File

Create a new CDF file named my_file.cdf using cdflib.create. This function corresponds to the CDF library C API routine CDFcreateCDF. cdflib.create returns a file identifier.

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

Create Variables in CDF File

Create variables named Time and Latitude using cdflib.createVar. This function corresponds to the CDF library C API routine CDFcreatezVar. cdflib.createVar returns a numeric identifier for each variable.

time_id = cdflib.createVar(cdfid,"Time","cdf_int4",1,[],true,[]);
lat_id = cdflib.createVar(cdfid,"Latitude","cdf_int2",1,181,true,true);

Create a variable named Image.

dimSizes = [20 10];
image_id = cdflib.createVar(cdfid,"Image","cdf_int4",1, ...
                            dimSizes,true,[true true]);

Write to Variables

Write data to the first and second records of the Time variable. Record numbers are zero-based. The cdflib.putVarRecordData function corresponds to the CDF library C API routine CDFputzVarRecordData.

cdflib.putVarRecordData(cdfid,time_id,0,int32(23))
cdflib.putVarRecordData(cdfid,time_id,1,int32(24))

Write data to the Latitude variable.

data = int16(-90:90);
recspec = [0 1 1];
dimspec = {0 181 1};
cdflib.hyperPutVarData(cdfid,lat_id,recspec,dimspec,data)

Write data to the Image variable.

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)

Write to Global Attribute

Create a global attribute named TITLE using cdflib.createAttr. This function corresponds to the CDF library C API routine CDFcreateAttr. cdflib.createAttr returns a numeric identifier for the attribute. Attribute numbers are zero-based.

titleAttrNum = cdflib.createAttr(cdfid,"TITLE","global_scope");

Write values to entries in the global attribute.

cdflib.putAttrEntry(cdfid,titleAttrNum,0,"CDF_CHAR","cdf Title")
cdflib.putAttrEntry(cdfid,titleAttrNum,1,"CDF_CHAR","Author")

Write to Attributes Associated with Variables

Create attributes associated with variables in the CDF file.

fieldAttrNum = cdflib.createAttr(cdfid,"FIELDNUM","variable_scope");
unitsAttrNum = cdflib.createAttr(cdfid,"UNITS","variable_scope");

Write values to attributes of the Time variable.

cdflib.putAttrEntry(cdfid,fieldAttrNum,time_id, ...
                    "CDF_CHAR","Time of observation")
cdflib.putAttrEntry(cdfid,unitsAttrNum,time_id, ...
                    "CDF_CHAR","Hours")

Get Information About CDF File

Get information about the file using cdflib.inquire. This function corresponds to the CDF library C API routines CDFinquireCDF and CDFgetNumgAttributes. cdflib.inquire returns a structure that includes information about the data encoding and the number of variables and attributes in the file.

info = cdflib.inquire(cdfid)
info = struct with fields:
     encoding: 'IBMPC_ENCODING'
     majority: 'ROW_MAJOR'
       maxRec: 2
      numVars: 3
    numvAttrs: 2
    numgAttrs: 1

Close CDF File

Close the CDF file using cdflib.close. This function corresponds to the CDF library C API routine CDFcloseCDF. You must close a CDF file to guarantee that all modifications you made since opening the CDF file are written to the file.

cdflib.close(cdfid)

See Also

| | | | | |

External Websites