CODA MATLAB

The CODA MATLAB interface consists of several functions that allow the user to easily access data inside product files.

Contents

CODA Definition Path

Note that in order to access products whose formats are defined using .codadef files, you should let CODA now where these .codadef files are stored. By default the CODA MATLAB interface will look for .codadef files in a directory relative to the location of the CODA MATLAB MEX file (../../../share/coda/definitions; note that software that embed CODA may sometimes override this default location).

You can override the default location by setting the CODA_DEFINITION environment variable. This environment variable should be a ':' separated (';' on Windows) list of absolute paths to directories containing .codadef files or absolute paths to .codadef files themselves (or a mix of those).

Functions

The descriptions for each CODA MATLAB interface function are formatted in the same way that MATLAB documents its functions. This means that although functions might be written in capitals here, you should use the small-caps version in MATLAB to call them.

CODA_ATTRIBUTES

CODA_ATTRIBUTES Return object attributes.

C = CODA_ATTRIBUTES(CODA_FILE_ID, <DATA SPEC ARGS>) returns a struct containing all attributes that are associated with the specified data element. If no attributes are available an empty struct will be returned.

The coda_file_id parameter must be a valid CODA file handle that was retrieved with coda_open. The format for the data specification argument list <data spec args> is described in a separate section.

This function is deprecated. You can replace it by using CODA_FETCH(CODA_FILE_ID, <DATA SPEC ARGS>, "@").

See also CODA_FETCH, CODA_OPEN, DATA SPEC ARGS

CODA_CLASS

CODA_CLASS Return object class.

C = CODA_CLASS(CODA_FILE_ID, <DATA SPEC ARGS>) returns the MATLAB class of the specified data element. With coda_class you can check what the class of a data element will be without the need to retrieve it via coda_fetch. The returned class is identical to what would be returned by class(coda_fetch(...)) if coda_class and coda_fetch had identical parameters.

The coda_file_id parameter must be a valid CODA file handle that was retrieved with coda_open. The format for the data specification argument list <data spec args> is described in a separate section.

See also CODA_FETCH, CODA_OPEN, DATA SPEC ARGS

CODA_CLEARALL

CODA_CLEARALL Close all open product files and unload all cached product format definitions from memory.

CODA_CLEARALL will close all currently open product files (similar to calling coda_close for all open product files). This can be especially helpful to close files for which you have lost the file handle (something that can occur if you were running an M file that opened a product file, but terminated halfway and thus left the file open).

This function will also free all product format definitions from memory. When coda_open is called, CODA will read the product format definition for the opened file and keeps this cached in memory. A call to coda_clearall will remove all cached definitions.

See also CODA_OPEN, CODA_CLOSE

CODA_CLOSE

CODA_CLOSE Close an open product file.

CODA_CLOSE(CODA_FILE_ID) closes the product file which is associated with the coda_file_id file handle.

The coda_file_id parameter must be a valid CODA file handle that was retrieved with coda_open.

See also CODA_OPEN, CODA_CLEARALL

CODA_DESCRIPTION

CODA_DESCRIPTION Retrieve field description.

DESC = CODA_DESCRIPTION(CODA_FILE_ID, <DATA SPEC ARGS>) returns a string containing the description in the product format definition of the specified data element. If the last item of the data specifier argument list equals a fieldname then you will get the description from the product format definition for this field.

The coda_file_id parameter must be a valid CODA file handle that was retrieved with coda_open. The format for the data specification argument list <data spec args> is described in a separate section.

See also CODA_FETCH, CODA_OPEN, DATA SPEC ARGS

CODA_EVAL

CODA_EVAL Evaluate a CODA expression.

RESULT = CODA_EVAL(CODA_EXPRESSION, [CODA_FILE_ID, <DATA SPEC ARGS>]) returns the evaluated CODA expression at the given product location.
The coda_expression parameter should be a string with a valid CODA expression. The syntax for the CODA expression language can be found in the CODA Expressions documentation.

If the CODA expression can be evaluated statically, then coda_file_id and <data spec args> are not required, otherwise these arguments are mandatory.
The coda_file_id parameter must be a valid CODA file handle that was retrieved with coda_open. The format for the data specification argument list <data spec args> is described in a separate section.

Note that evaluation of 'void' expressions is not supported.

See also CODA_FETCH, CODA_OPEN, DATA SPEC ARGS

CODA_FETCH

CODA_FETCH Retrieve data from a product file.

DATA = CODA_FETCH(CODA_FILE_ID, <DATA SPEC ARGS>) reads the specified data element from the product file. Instead of just reading individual values, like strings, integers, doubles, etc. it is also possible to read complete arrays or records of data or even the full product. For instance if 'pf' is a valid file handleand the product contains a dataset of records then you can retrieve a time field from the first record using:

value = coda_fetch(pf, "datasetname", 0, "time")

You can also combine the path into a single string parameter:

value = coda_fetch(pf, "datasetname[0]/time")

Which path to provide depends on the format of the product you are trying to access.

Instead of just reading individual values, like strings, integers, doubles, etc. it is also possible to read complete arrays or records of data. For instance, you could read the whole first record of the dataset using:

record = coda_fetch(pf, "datasetname", 0)

This gives you a MATLAB struct containing all the record fields.

It is also possible to read an entire product at once by leaving the data specification argument list empty:

product = coda_fetch(pf)

To read attributes, you can pass '@' as path element. For instance, the following command reads the 'units' attribute value from a temperature variable:

unit = coda_fetch(pf, "temperature@units")

The coda_file_id parameter must be a valid CODA file handle that was retrieved with coda_open. The format for the data specification argument list <data spec args> is described in a separate section.

See also CODA_OPEN, DATA SPEC ARGS

CODA_FIELDAVAILABLE

CODA_FIELDAVAILABLE Find out whether a dynamically available record field is available or not.

IS_AVAILABLE = CODA_FIELDAVAILABLE(CODA_FILE_ID, <DATA SPEC ARGS>) returns 1 if the record field is available and 0 if it is not. The last item of the data specifier argument should point to a record field.

The coda_file_id parameter must be a valid CODA file handle that was retrieved with coda_open. The format for the data specification argument list <data spec args> is described in a separate section.

See also CODA_FETCH, CODA_OPEN, DATA SPEC ARGS

CODA_FIELDCOUNT

CODA_FIELDCOUNT Retrieve the number of fields for a record in a product file.

N = CODA_FIELDCOUNT(CODA_FILE_ID, <DATA SPEC ARGS>) returns the number of fields for the struct that would be returned if coda_fetch would have been called with the same arguments. The last item of the data specifier argument should point to a record.

The coda_file_id parameter must be a valid CODA file handle that was retrieved with coda_open. The format for the data specification argument list <data spec args> is described in a separate section.

See also CODA_FETCH, CODA_OPEN, DATA SPEC ARGS

CODA_FIELDNAMES

CODA_FIELDNAMES Retrieve a list of fieldnames for a record in a product file.

FIELDNAMES = CODA_FIELDNAMES(CODA_FILE_ID, <DATA SPEC ARGS>) returns a cellarray of strings of fieldnames for the struct that would be returned if coda_fetch would have been called with the same arguments. The last item of the data specifier argument should point to a record.

The coda_file_id parameter must be a valid CODA file handle that was retrieved with coda_open. The format for the data specification argument list <data spec args> is described in a separate section.

See also CODA_FETCH, CODA_OPEN, DATA SPEC ARGS

CODA_GETOPT

CODA_GETOPT Retrieve CODA MATLAB interface options.

OPTIONS = CODA_GETOPT returns a record with all available CODA MATLAB interface options and their current values.

VALUE = CODA_GETOPT(OPTION_NAME) will return the value of the specified option.

See also CODA_SETOPT, CODA MATLAB interface options

CODA_OPEN

CODA_OPEN Open a product file.

CODA_FILE_ID = CODA_OPEN(FILEPATH) opens the product file pointed to by filepath. Upon successful opening the function returns a file handle that should be passed to other CODA MATLAB interface functions that need to read data/information from this product file.

The filepath parameter must be a string containing the full path (or relative path with respect to the current working directory) of the product file.

See also CODA_CLOSE, CODA_OPEN_AS, CODA_CLEARALL

CODA_OPEN_AS

CODA_OPEN_AS Open a product file using a specific format definition.

CODA_FILE_ID = CODA_OPEN_AS(FILEPATH, PRODUCT_CLASS, PRODUCT_TYPE, VERSION) will try to open the specified file for reading similar to CODA_OPEN, but instead of trying to automatically recognise the applicable product class/type/version as CODA_OPEN does, this function will impose the format definition that is associated with the given product_class, product_type, and version parameters.

Note that you normally won't need this function as CODA will be able to recognize which format definition to use automatically. However, for the rare occasions where CODA_OPEN is not sufficient, you can use this function to force the use of a specific format definition.

You can specify -1 for the version to request the latest available version of the format definition.

See also CODA_OPEN, CODA_CLOSE, CODA_CLEARALL

CODA_PRODUCT_CLASS

CODA_PRODUCT_CLASS Retrieve product class of a product file.

PRODUCT_CLASS = CODA_PRODUCT_CLASS(CODA_FILE_ID) returns a string containing the product class of the product.

The coda_file_id parameter must be a valid CODA file handle that was retrieved with coda_open.

See also CODA_OPEN

CODA_PRODUCT_TYPE

CODA_PRODUCT_TYPE Retrieve product type of a product file.

PRODUCT_TYPE = CODA_PRODUCT_TYPE(CODA_FILE_ID) returns a string containing the product type of the product.

The coda_file_id parameter must be a valid CODA file handle that was retrieved with coda_open.

See also CODA_OPEN

CODA_PRODUCT_VERSION

CODA_PRODUCT_VERSION Retrieve product version for a product file.

PRODUCT_VERSION = CODA_PRODUCT_VERSION(CODA_FILE_ID) returns an integer denoting the product version, maintained by CODA to be able to distinguish between different versions of product specifications.

The coda_file_id parameter must be a valid CODA file handle that was retrieved with coda_open.

See also CODA_OPEN

CODA_SETOPT

CODA_SETOPT Set CODA MATLAB interface options.

CODA_SETOPT(OPTION_NAME, VALUE) assigns VALUE to the option specified by OPTION_NAME.

See also CODA_GETOPT, CODA MATLAB interface options

CODA_SIZE

CODA_SIZE Retrieve the dimensions for an array in a product file.

DIMS = CODA_SIZE(CODA_FILE_ID, <DATA SPEC ARGS>) returns the dimensions of the specified array. With coda_size you can check what the dimensions of an array will be without the need to retrieve it via coda_fetch. The returned dimension information is identical to what would be returned by size(coda_fetch(...)) if coda_size and coda_fetch had identical parameters. The last item of the data specifier argument should point to an array.

The coda_file_id parameter must be a valid CODA file handle that was retrieved with coda_open. The format for the data specification argument list <data spec args> is described in a separate section.

See also CODA_FETCH, CODA_OPEN, DATA SPEC ARGS

CODA_TIME_TO_STRING

CODA_TIME_TO_STRING Convert a number of seconds since 1-1-2000 to a human readable string format.

STR = CODA_TIME_TO_STRING(N_SECONDS_SINCE_2000) turns the double value containing the number of seconds since 1-1-2000 into a string containing the date and time in a human readable string of the form '2000-01-01 00:00:00.000000'.

CODA_UNIT

CODA_UNIT Retrieve unit information.

UNIT = CODA_UNIT(CODA_FILE_ID, <DATA SPEC ARGS>) returns a string containing the unit information which is stored in the product format definition for the specified data element.

The coda_file_id parameter must be a valid CODA file handle that was retrieved with coda_open. The format for the data specification argument list <data spec args> is described in a separate section.

See also CODA_FETCH, CODA_OPEN, DATA SPEC ARGS

CODA_VERSION

CODA_VERSION Get version number of CODA.

VERSION = CODA_VERSION returns the version number of CODA.

Data Specification Argument List

Several functions from the CODA MATLAB interface take a data specification argument list to specify a certain data element in a product file. This argument list is a comma separated list of names and identifiers that allow you to walk to a certain point in a product. The list can be left empty if you want to point to the root of the product. There are three types of arguments you can use in the list of arguments:

For the coda_fetch function there is an additional feature. If you provide a -1 for one or more of the dimensions of an array you will fetch all elements in the specified dimension(s). For example, with coda_fetch(pf, 'datasetname', -1, 'dsr_time') you can fetch all dsr_time values for all measurements into a single array. Note that passing -1 only works when passing it as an explicit argument (i.e. calling coda_fetch(pf, 'dataset[-1]/dsr_time'), where the -1 index is part of a string argument, will not work).

See also CODA_CLASS, CODA_EVAL, CODA_FETCH, CODA_FIELDNAMES, CODA_SIZE

CODA MATLAB interface options

ConvertNumbersToDouble

If set to 0 then the CODA MATLAB interface will, when reading data from a product file, use a matlab class that best matches the datatype of the data element in the product file (i.e. use 'int8' when the data is a one byte signed integer).

If set to 1 then the CODA MATLAB interface will use the matlab class 'double' for all numbers that are read from a product file.

The default value for this option is: 1

FilterRecordFields

Some records contain fields that have a fixed value or are spare fields. If this option is set to 1 then these kinds of fields will be filtered out when retrieving a record from a product file. If this option is set to 0 then all fields will be returned.

The default value for this option is: 1

PerformConversions

The CODA library has a global option that allows you to switch between reading data from a product in the way that it was exactly stored or in a more convenient way. For instance, sometimes floating point values with one digit precision are first multiplied by 10 and stored as an integer value in the product. If PerformConversions is set to 0 then CODA will read this integer value, but if it is set to 1 then CODA will first convert the integer back to a floating point value and divide it by 10 again. To see which fields of a product are effected by the PerformConversions option and what the conversion factor is look at the corresponding CODA Product Format Definition documentation.

You should also be aware that changing this option not only effects the result of CODA_FETCH, but also the result of CODA_CLASS (since this may, for instance, return 'single' instead of 'int16' if PerformConversions is set to 1) and CODA_UNIT.

The default value for this option is: 1

SwapDimensions

If set, CODA will swap the dimensions of multi-dimensional arrays (i.e. performing a multi-dimensional transpose on the data) so the array dimensions that are found in e.g. the CODA format definitions can be used as-is on the data. This distinction is needed because MATLAB uses Fortran-style ordering for array indices whereas CODA uses C-style array dimensioning ordering as the standard.

If you disable this option, CODA will no longer transpose the data itself, but will invert the ordering of the array indices you pass to e.g. CODA_FETCH and the dimension sizes that are returned by CODA_SIZE.

The default value for this option is: 1

Use64bitInteger

Some data elements in a product file are stored as 64bit integers. The CODA MATLAB interface is able to read this data and return them to matlab with the not fully supported matlab classes 'int64' and 'uint64'. If you set Use64bitInteger to 0 then the CODA MATLAB interface will convert the 64bit integer to a double and return the data with a matlab class 'double'.

Note that if ConvertNumbersToDouble is set to 1 then all integers will already be converted to doubles so in that case this option won't have any effect.

The default value for this option is: 0

UseMMap

By default CODA uses a technique called 'memory mapping' to open and access data from product files. Using mmap greatly outperforms the default approach of reading data using the open()/read() combination. The downside of mapping a file into memory is that it takes away valuable address space. When you run a 32-bit Operating System your maximum addressable memory range is 4GB and if you simultaneously try to keep a few large product files open your memory space can quickly become full. Opening additional files will then produce 'out of memory' errors. Note that this 'out of memory' situation has nothing to do with the amount of RAM you have installed in your computer. It is only related to the size of a memory pointer on your system, which is limited to 4GB.

If you are using CODA in a situation where you need to have multiple large product files open at the same time you can turn of the use of memory mapping by disabling this option. If you change the memory mapping option, the new setting will only be applicable for files that will be opened after you changed the option. Any files that were already open will keep using the mechanism with which they were opened.

The default value for this option is: 1

UseSpecialTypes

The CODA type system contains a series of special types that were introduced to make it easier for the user to read certain types of information. Examples of special types are the 'time', 'complex', and 'no data' types. Each special data type is an abstraction on top of another non-special data type. Sometimes you want to access a file using just the non-special data types (e.g. if you want to get to the raw time data in a file). If you disable this option, CODA will use the base type of a special type (and not the special type itself) when reading data or retrieving information about a data item. See the CODA Product Format Definition documentation for more information about special types.

The default value for this option is: 1

See also CODA_GETOPT, CODA_SETOPT