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:
- Array index: You need to provide an array index that has the same number of elements as there are dimensions in the array that you are referring to. So if the array is two dimensional you have to pass indices for both dimensions like
[4 5]
. If the array is one dimensional you can just provide a single index value (without the '[]') to get to the k-th element. You can usecoda_size
to check the number of dimensions of an array and the size of each dimension. Note that indices for an array index go from 1..N (and not from 0..(N-1)). - Field name: To go to a certain field inside the record that you are pointing to, you can provide the field name as a string (which is case sensitive, so you should make sure that the name is exactly the same as is returned by
coda_fieldnames
). - Path: You can provide a string containing a path reference, such as
"measurements[0]/time"
. Using paths will also allow you to navigate to attributes by using"@"
as a path component. For instance, '"temperature", "@", "units"
' or"temperature@units"
will point to the units attribute of the temperature data. Note that array indices used in these string paths need to be 0-based indices on the flattened view of an array. This means that if an array is defined as having more than one dimension then the index as used in a path expression should be between 0 and the total number of array elements (exclusive). For example, for a[10 8]
array, the index should be >= 0 and <= 79. For, instancecoda_fetch(pf, 'variable', [1 1])
is equivalent tocoda_fetch(pf, 'variable[0]')
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