From the MATLAB prompt, if you type

>> help mexnc        
      
you will get
    MEXNC is a gateway to the netCDF interface. To use this function, you 
    should be familiar with the information about netCDF contained in the 
    "User's Guide for netCDF".  This documentation may be obtained from 
    Unidata at 
    .

    R2008b and Beyond
    -----------------
    Starting with R2008b, MATLAB comes with native netCDF support.  Mexnc
    should just pick up on this automatically.

    The general syntax for MEXNC is mexnc(funcstr,param1,param2,...). 
    There is a one-to-one correspondence between functions in the netCDF 
    library and valid values for funcstr.  For example, 
    MEXNC('close',ncid) corresponds to the C library call nc_close(ncid).

    OPeNDAP
    -------
    Please read the README for details about using OPeNDAP with mexnc.

    Syntax conventions
    ------------------ 
    The funcstr argument can be either upper or lower case.

    NetCDF has several datatypes to choose from.  

         netCDF           MATLAB equivalent
         -----------      -----------------
         DOUBLE           double
         FLOAT            single
         INT              int32
         SHORT            int16
         SCHAR            int8
         UCHAR            uint8
         TEXT             char

    Unsigned matlab types uint64, uint32, uint16, and uint8 have no netCDF
    equivalents.  Anytime you see the term 'xtype' in the function 
    descriptions below, it refers to a netCDF datatype.
 
    The return status of a MEXNC operation will correspond exactly to the 
    return status of the corresponding netCDF API function.   A non-zero 
    value corresponds to an error.  You can use mexnc('STRERROR',status) 
    to get an error message.
 
    Ncid refers to the netCDF file ID.

    Dimid refers to a netCDF dimension ID.

    Varid refers to a netCDF variable ID.  If reading or writing an 
    attribute, using -1 as the varid will specify a global attribute.
    See also NC_GLOBAL.
 
    NetCDF files use C-style row-major ordering for multidimensional arrays, 
    while MATLAB uses FORTRAN-style column-major ordering.  This means that 
    the size of a MATLAB array must be flipped relative to the defined 
    dimension sizes of the netCDF data set.  For example, if the netCDF 
    dataset has dimensions 3x4x5, then the equivalent MATLAB array has 
    size 5x4x3.  The PERMUTE command is useful for making any necessary 
    conversions when reading from or writing to netCDF data sets.
 
    Dataset functions
    --------------
      [ncid,status] = mexnc ('CREATE',filename,access_mode );
          The access mode can be a string such as 'clobber' or 
          'noclobber', but it is preferable to use the helper functions
 
              nc_clobber_mode
              nc_noclobber_mode
              nc_share_mode
              nc_64bit_offset_mode (new in netCDF 3.6)
          
          These correspond to named constants in the  header file.  
          Check the netCDF User's Guide for more information.  You may also 
          combine any of these with the bitor function, e.g.

              access_mode = bitor ( nc_write_mode, nc_share_mode );

          The mode is optional, defaulting to nc_noclobber_mode.

          See NC_CLOBBER_MODE, NC_NOCLOBBER_MODE, NC_SHARE_MODE, 
          NC_64BIT_OFFSET_MODE.

      [chunksz_out,ncid,status] = mexnc ('_CREATE',filename,mode,initialsize,chunksz_in);
          More advanced version of 'create'.  The 'initialsize' parameter sets 
          the initial size of the file at creation time.  Chunksize is a 
          tuning parameter, see the netcdf man page for further details.


      [ncid,status] = mexnc('OPEN',filename,access_mode);
          Opens an existing netCDF dataset for access.  Access modes 
          available are
 
              nc_nowrite_mode or 'nowrite'
              nc_write_mode   or 'write'
              nc_share_mode   or 'share'
        
          If the access_mode is not given, the default is assumed to be 
          nc_nowrite_mode.
 
          See NC_WRITE_MODE, NC_NOWRITE_MODE, NC_SHARE_MODE, 

      [ncid,chunksizehint,status] 
              = mexnc('_OPEN',filename,access_mode,chunksizehint);

          Same as usual OPEN operation with an additional performance tuning 
          parameter.  See the netcdf documentation for additional information.
 

      status = mexnc('CLOSE',ncid);
          Closes a previously-opened netCDF file.
 

      status = mexnc('REDEF',ncid);
          Puts an open netCDF dataset into define mode so that dimensions, 
          variables, and attributes can be added or renamed and attributes 
          can be deleted.  

 
      status = mexnc('ENDDEF',ncid);
          Takes an open netCDF file out of define mode.
 

      status = mexnc('_ENDDEF',ncid,h_minfree,v_align,v_minfree,r_align);
          Same as ENDDEF, but with enhanced performance tuning parameters.  
          See the man page for netcdf for details.

 
      status = mexnc('SYNC',ncid );
          Unless  the NC_SHARE bit is set in OPEN or CREATE, accesses to the 
          underlying netCDF dataset are buffered by the library.  This 
          function  synchronizes the state of the underlying dataset and the 
          library.  This is done automatically by CLOSE and ENDDEF.
 

      [ndims,nvars, ngatts, unlimdim, status] = mexnc('INQ',ncid);
          Inquires as to the number of dimensions, number of variables, number 
          of global attributes, and the unlimited dimension.
 

      [ndims,status] = mexnc('INQ_NDIMS',ncid);
          Inquires as to the number of dimensions only. 
 

      [nvars,status] = mexnc('INQ_NVARS',ncid);
          Inquires as to the number of variables only. 

 
      [natts,status] = mexnc('INQ_NATTS',ncid);
          Inquires as to the number of global attributes only. 

 
      [unlimdim,status] = mexnc ('INQ_UNLIMDIM',ncid);
          Inquire as to the unlimited dimension.  As of netCDF 4.0, this
          will return just the first unlimited dimension.
 

      status = mexnc('ABORT',ncid);
          One does not really need this function.  Just ignore it.

 
      [old_fill_mode,status] = mexnc('SET_FILL',ncid,new_fill_mode)
          Determines whether or not variable prefilling will be done.  
          The netCDF dataset shall be writable.  new_fill_mode is
          either nc_fill_mode to enable prefilling (the default) or 
          nc_nofill_mode to disable  prefilling.  This function 
          returns the previous setting in old_fill_mode.
 

    Dimension functions
    --------------
      [dimid,status] = mexnc('DEF_DIM',ncid,name,length);
          Adds a new dimension to an open netCDF dataset in define 
          mode. It returns a dimension ID, given the netCDF ID, the 
          dimension name, and the dimension length.  The dimension
          length can be 'NC_UNLIMITED', which will define an 
          unlimited dimension.

 
      [dimid,status] = mexnc('INQ_DIMID',ncid,name);
          Returns the ID of a netCDF dimension, given the name of the 
          dimension. 
 

      [name,length,status] = mexnc('INQ_DIM',ncid,dimid);
          Returns information about a netCDF dimension including its 
          name and its length. The length for the unlimited dimension, 
          if any, is the number of records written so far.
 

      [name,status] = mexnc('INQ_DIMNAME',ncid,dimid);
          Returns the name of a dimension given the dimid.
 

      [dimlength,status] = mexnc('INQ_DIMLEN',ncid,dimid);
          Returns the length of a dimension given the dimid.  The 
          length for the unlimited dimension is the number of records
          written so far.
 

      status = mexnc('RENAME_DIM',ncid,dimid,name);
          Renames an existing dimension in a netCDF dataset open for 
          writing.
 

    General Variable functions
    --------------------------
      [varid,status] = mexnc('DEF_VAR',ncid,name,xtype,dimids);
      [varid,status] = mexnc('DEF_VAR',ncid,name,xtype,ndims,dimids);
          Adds a new variable to a netCDF dataset.  If ndims is not 
          specified, it is inferred from the length of dimids.  In 
          order to define a singleton variable (a variable with one 
          element but no defined dimensions, set dimids = [].
 

      [varid,status] = mexnc('INQ_VARID',ncid,varname);
          Returns the ID of a netCDF variable, given its name.
 

      [varname,xtype,ndims,dimids,natts,status] = mexnc('INQ_VAR',ncid,varid);
          Returns other information about a netCDF variable given its ID.
 

      [varname,status] = mexnc('INQ_VARNAME',ncid,varid);
          Returns variable name given its ID.
 

      [vartype,status] = mexnc('INQ_VARTYPE',ncid,varid);
          Returns numeric datatype given its ID.
 

      [varndims,status] = mexnc('INQ_VARNDIMS',ncid,varid);
          Returns number of dimensions given the varid.
 

      [dimids,status] = mexnc('INQ_VARDIMID',ncid,varid);
          Returns dimension identifiers given the varid.
 

      [varnatts,status] = mexnc('INQ_VARNATTS',ncid,varid);
          Returns number of variable attributes given the varid.
 

      status = mexnc('RENAME_VAR',ncid,varid,new_varname);
          Changes  the  name  of  a  netCDF  variable.
 

   Variable I/O functions
   ----------------------
     These routines are specialized for the various netCDF datatypes.  
 
     The data is automatically converted from the given type to the in-file 
     netCDF type.  Since MATLAB's default datatype is double precision, most of
     the time you would want to use the DOUBLE functions.

     Because of the difference between row-major order (C) and column-major 
     order (MATLAB), you should transpose or permute your data before passing 
     it into or after receiving it from these I/O routines.  

     MAJOR DIFFERENCE BETWEEN THESE FUNCTIONS AND MexCDF(netcdf-2).
         These functions do not make use of the add_offset and
         scale_factor attributes.  That job is left to any user
         routines written as a wrapper to MexCDF.

         The varid must be the actual varid, substituting the name 
         of the variable is not allowed.


     status = mexnc('PUT_VAR_DOUBLE',ncid,varid,data);
     status = mexnc('PUT_VAR_FLOAT', ncid,varid,data);
     status = mexnc('PUT_VAR_INT',   ncid,varid,data);
     status = mexnc('PUT_VAR_SHORT', ncid,varid,data);
     status = mexnc('PUT_VAR_SCHAR', ncid,varid,data);
     status = mexnc('PUT_VAR_UCHAR', ncid,varid,data);
     status = mexnc('PUT_VAR_TEXT',  ncid,varid,data);
         These routines write an entire dataset.


     [data,status] = mexnc('GET_VAR_DOUBLE',ncid,varid);
     [data,status] = mexnc('GET_VAR_FLOAT', ncid,varid);
     [data,status] = mexnc('GET_VAR_INT',   ncid,varid);
     [data,status] = mexnc('GET_VAR_SHORT', ncid,varid);
     [data,status] = mexnc('GET_VAR_SCHAR', ncid,varid);
     [data,status] = mexnc('GET_VAR_UCHAR', ncid,varid);
     [data,status] = mexnc('GET_VAR_TEXT',  ncid,varid);
         These routines retrieve an entire dataset.


     status = mexnc('PUT_VAR1_DOUBLE',ncid,varid,start,data);
     status = mexnc('PUT_VAR1_FLOAT', ncid,varid,start,data);
     status = mexnc('PUT_VAR1_INT',   ncid,varid,start,data);
     status = mexnc('PUT_VAR1_SHORT', ncid,varid,start,data);
     status = mexnc('PUT_VAR1_SCHAR', ncid,varid,start,data);
     status = mexnc('PUT_VAR1_UCHAR', ncid,varid,start,data);
     status = mexnc('PUT_VAR1_TEXT',  ncid,varid,start,data);
         These routines write a single value to the location at the given
         starting index.


     [data,status] = mexnc('GET_VAR1_DOUBLE',ncid,varid,start);
     [data,status] = mexnc('GET_VAR1_FLOAT', ncid,varid,start);
     [data,status] = mexnc('GET_VAR1_INT',   ncid,varid,start);
     [data,status] = mexnc('GET_VAR1_SHORT', ncid,varid,start);
     [data,status] = mexnc('GET_VAR1_SCHAR', ncid,varid,start);
     [data,status] = mexnc('GET_VAR1_UCHAR', ncid,varid,start);
     [data,status] = mexnc('GET_VAR1_TEXT',  ncid,varid,start);
         These routines retrieve a single value from the location at the given
         starting index.


     status = mexnc('PUT_VARA_DOUBLE',ncid,varid,start,count,data);
     status = mexnc('PUT_VARA_FLOAT', ncid,varid,start,count,data);
     status = mexnc('PUT_VARA_INT',   ncid,varid,start,count,data);
     status = mexnc('PUT_VARA_SHORT', ncid,varid,start,count,data);
     status = mexnc('PUT_VARA_SCHAR', ncid,varid,start,count,data);
     status = mexnc('PUT_VARA_UCHAR', ncid,varid,start,count,data);
     status = mexnc('PUT_VARA_TEXT',  ncid,varid,start,count,data);
         These functions write into a contiguous section of a netCDF variable
         defined by a starting corner of indices and a vector of edge lengths
         or counts.


     [data,status] = mexnc('GET_VARA_DOUBLE',ncid,varid,start,count);
     [data,status] = mexnc('GET_VARA_FLOAT', ncid,varid,start,count);
     [data,status] = mexnc('GET_VARA_INT',   ncid,varid,start,count);
     [data,status] = mexnc('GET_VARA_SHORT', ncid,varid,start,count);
     [data,status] = mexnc('GET_VARA_SCHAR', ncid,varid,start,count);
     [data,status] = mexnc('GET_VARA_UCHAR', ncid,varid,start,count);
     [data,status] = mexnc('GET_VARA_TEXT',  ncid,varid,start,count);
         These functions read a contiguous section from a netCDF variable 
         defined by a starting corner of indices and a vector of edge lengths
         or corners.


     status = mexnc('PUT_VARS_DOUBLE',ncid,varid,start,count,stride,data);
     status = mexnc('PUT_VARS_FLOAT', ncid,varid,start,count,stride,data);
     status = mexnc('PUT_VARS_INT',   ncid,varid,start,count,stride,data);
     status = mexnc('PUT_VARS_SHORT', ncid,varid,start,count,stride,data);
     status = mexnc('PUT_VARS_SCHAR', ncid,varid,start,count,stride,data);
     status = mexnc('PUT_VARS_UCHAR', ncid,varid,start,count,stride,data);
     status = mexnc('PUT_VARS_TEXT',  ncid,varid,start,count,stride,data);
         These functions write into a non-contiguous section of a netCDF 
         variable defined by a starting corner of indices, a vector of edge 
         lengths or counts, and a vector of the sampling interval or strides.
         For example, a stride of [2 3] would write into every second element
         along the first dimension, and every third element along the second
         dimension.


     [data,status] = mexnc('GET_VARS_DOUBLE',ncid,varid,start,count,stride);
     [data,status] = mexnc('GET_VARS_FLOAT', ncid,varid,start,count,stride);
     [data,status] = mexnc('GET_VARS_INT',   ncid,varid,start,count,stride);
     [data,status] = mexnc('GET_VARS_SHORT', ncid,varid,start,count,stride);
     [data,status] = mexnc('GET_VARS_SCHAR', ncid,varid,start,count,stride);
     [data,status] = mexnc('GET_VARS_UCHAR', ncid,varid,start,count,stride);
     [data,status] = mexnc('GET_VARS_TEXT',  ncid,varid,start,count,stride);
         These functions read a non-contiguous section from a netCDF variable 
         defined by a starting corner of indices, a vector of edge lengths
         or corners, and a vector of the sampling interval or strides.  


     status = mexnc('PUT_VARM_DOUBLE',ncid,varid,start,count,stride,imap,data);
     status = mexnc('PUT_VARM_FLOAT', ncid,varid,start,count,stride,imap,data);
     status = mexnc('PUT_VARM_INT',   ncid,varid,start,count,stride,imap,data);
     status = mexnc('PUT_VARM_SHORT', ncid,varid,start,count,stride,imap,data);
     status = mexnc('PUT_VARM_SCHAR', ncid,varid,start,count,stride,imap,data);
     status = mexnc('PUT_VARM_UCHAR', ncid,varid,start,count,stride,imap,data);
     status = mexnc('PUT_VARM_TEXT',  ncid,varid,start,count,stride,imap,data);
         These functions write into a mapped section of a netCDF variable 
         defined by a start, a count, a stride, and vector describing the 
         mapping between the in-memory data and the netCDF dimensions.  One 
         possible use of these would be to transpose your data upon output.


     [data,status] = mexnc('GET_VARM_DOUBLE',ncid,varid,start,count,stride,imap);
     [data,status] = mexnc('GET_VARM_FLOAT', ncid,varid,start,count,stride,imap);
     [data,status] = mexnc('GET_VARM_INT',   ncid,varid,start,count,stride,imap);
     [data,status] = mexnc('GET_VARM_SHORT', ncid,varid,start,count,stride,imap);
     [data,status] = mexnc('GET_VARM_SCHAR', ncid,varid,start,count,stride,imap);
     [data,status] = mexnc('GET_VARM_UCHAR', ncid,varid,start,count,stride,imap);
     [data,status] = mexnc('GET_VARM_TEXT',  ncid,varid,start,count,stride,imap);
         These functions read a mapped section from a netCDF variable 
         defined by a starting corner, a count, a stride, and a mapping between
         the in-memory data and the netCDF dimensions.  



   Attribute functions
   -------------------
     Any routines marked "*XXX" constitute a suite of routines
     that are specialized for various datatypes.  Possibilities
     for XXX include "uchar", "schar", "short", "int", "float", 
     and "double".  The data is automatically converted to the 
     external type of the specified attribute.    


     status = mexnc('COPY_ATT',ncid_in,varid_in,attname,ncid_out,varid_out);
         Copies an attribute from one variable to another, possibly
         within the same netcdf file.


     status = mexnc('DEL_ATT',ncid,varid,attname);
         Deletes an attribute.


     [att_value,status] = mexnc('GET_ATT_DOUBLE',ncid,varid,attname);
     [att_value,status] = mexnc('GET_ATT_FLOAT', ncid,varid,attname);
     [att_value,status] = mexnc('GET_ATT_INT',   ncid,varid,attname);
     [att_value,status] = mexnc('GET_ATT_SHORT', ncid,varid,attname);
     [att_value,status] = mexnc('GET_ATT_SCHAR', ncid,varid,attname);
     [att_value,status] = mexnc('GET_ATT_UCHAR', ncid,varid,attname);
     [att_value,status] = mexnc('GET_ATT_TEXT',  ncid,varid,attname);
         Retrieves an attribute value.   The class of att_value is determined
         by the funcstr, not the in-file attribute datatype.


     [datatype,attlen,status] = mexnc('INQ_ATT',ncid,varid,attname);
         Retrieves the datatype and length of an attribute given its
         name.


     [attid,status] = mexnc('INQ_ATTID',ncid,varid,attname);
         Retrieves the numeric id of an attribute given its name.


     [att_len,status] = mexnc('INQ_ATTLEN',ncid,varid,attname);
         Retrieves the length of an attribute given the name.


     [attname,status] = mexnc('INQ_ATTNAME',ncid,varid,attid);
         Retrieves the name of an attribute given its numeric attribute id.


     [att_type,status] = mexnc('INQ_ATTTYPE',ncid,varid,attname);
         Retrieves the numeric id of the datatype of an attribute


     status = mexnc('PUT_ATT_DOUBLE',ncid,varid,attname,datatype,attvalue);
     status = mexnc('PUT_ATT_FLOAT', ncid,varid,attname,datatype,attvalue);
     status = mexnc('PUT_ATT_INT',   ncid,varid,attname,datatype,attvalue);
     status = mexnc('PUT_ATT_SHORT', ncid,varid,attname,datatype,attvalue);
     status = mexnc('PUT_ATT_SCHAR', ncid,varid,attname,datatype,attvalue);
     status = mexnc('PUT_ATT_UCHAR', ncid,varid,attname,datatype,attvalue);
     status = mexnc('PUT_ATT_TEXT',  ncid,varid,attname,datatype,attvalue);
         Writes an attribute value.  The class of attvalue determines which
         of these functions you should use.  Xtype, on the other hand, 
         determines what the datatype will be of in-file netCDF attribute.

     status = mexnc('RENAME_ATT',ncid,varid,old_attname,new_attname);
         Renames an attribute.


    Miscellaneous functions
    --------------
      error_message = mexnc('STRERROR',error_code);
          Returns a reference to an error message string corresponding to an 
          integer netCDF error status or to a system error number, presumably 
          returned by a previous call to some other netCDF function. 
 

      lib_version = mexnc('INQ_LIBVERS');
          Returns a string identifying the version of the netCDF library 
          and when it was built.
 

  netCDF 2.4 API
  --------------
  These functions constitute the time-tested mexcdf that was build on 
  top of the netCDF 2.4 API.  They continue to work, but in some cases operate
  somewhat differently than the MexCDF(netcdf-3) functions.
 
      status = mexnc('ENDEF', cdfid)
      [ndims, nvars, natts, recdim, status] = mexnc('INQUIRE', cdfid)
 
      status = mexnc('DIMDEF', cdfid, 'name', length)
      [dimid, rcode] = mexnc('DIMID', cdfid, 'name')
      [name, length, status] = mexnc('DIMINQ', cdfid, dimid)
      status = mexnc('DIMRENAME', cdfid, 'name')
 
      status = mexnc('VARDEF', cdfid, 'name', datatype, ndims, [dim])
      [varid, rcode] = mexnc('VARID', cdfid, 'name')
      [name, datatype, ndims, dimids, natts, status] = mexnc('VARINQ', cdfid, varid)
      status = mexnc('VARPUT1', cdfid, varid, coords, value, autoscale)
      [value, status] = mexnc('VARGET1', cdfid, varid, coords, autoscale)
      status = mexnc('VARPUT', cdfid, varid, start, count, value, autoscale)
      [value, status] = mexnc('VARGET', cdfid, varid, start, count, autoscale)
      status = mexnc('VARPUTG', cdfid, varid, start, count, stride, [], value, autoscale)
      [value, status] = mexnc('VARGETG', cdfid, varid, start, count, stride, [], autoscale)
      status = mexnc('VARRENAME', cdfid, varid, 'name')
 
      status = mexnc('ATTPUT', cdfid, varid, 'name', datatype, value) 
      status = mexnc('ATTPUT', cdfid, varid, 'name', datatype, len, value) 
          
          A negative value on the length will cause the mexfile to 
          try to figure out the length itself.

      [datatype, len, status] = mexnc('ATTINQ', cdfid, varid, 'name')
      [value, status] = mexnc('ATTGET', cdfid, varid, 'name')
      status = mexnc('ATTCOPY', incdf, invar, 'name', outcdf, outvar)
      [name, status] = mexnc('ATTNAME', cdfid, varid, attnum)
      status = mexnc('ATTRENAME', cdfid, varid, 'name', 'newname')
      status = mexnc('ATTDEL', cdfid, varid, 'name')
 
      len = mexnc('TYPELEN', datatype)
      old_fillmode = mexnc('SETFILL', cdfid, fillmode)
 
      old_ncopts = mexnc('SETOPTS', ncopts)
      ncerr = mexnc('ERR')
      code = mexnc('PARAMETER', 'NC_...')