The Channel Data Exchange (CDX) File Format

At all stages of radio channel sounding, estimation, modeling, and simulation, large data sets have to be processed.

The Channel Data Exchange (CDX) file format is proposed for channel data recording, storage, and processing in a convenient and portable way. It is based on the HDF5 format and allows for the storage of large data sets.

Bindings exist to create and read CDX files for C++, Python, and Matlab.

In the CDX file, floating point data can be stored platform independently. CDX stores links to multiple satellites.

CDX allows for the storage of two different types of data:

  1. continuous-delay data: data consisting of path components with a continuous delay as produced by channel models
  2. discrete-delay data: data sampled with a certain sampling frequency, e.g. by a channel sounder


All data is stored in groups within an HDF5 file. Groups resemble (sub-)directories present in file systems. The format is as follows:

/parameters/ group for all parameters of the CDX file
/parameters/creation_time the creation time of the file
/parameters/delay_type either 'continuous-delay' or 'discrete-delay'
/parameters/number_of_delay_samples this parameter defines the (constant) number of delay samples, if delay_type = 'discrete-delay'
/parameters/c0 the speed of light in Hz.
/parameters/cir_rate The (constant) rate at which the channel impulse responses are saved
/parameters/channel/ group for all channel model specific parameters, e.g. scenery definitions
/link0/, /link1/, /link2/, ...groups for the links
/link0/cir0/, /link0/cir1/, /link0/cir2/, ...groups for the CIRs per link. The number of CIRs per link has to be the same for all links.

Often, channel models use a value for the speed of light. To keep all analyses consistent this value has to be saved to the CDX file.

For the continuous-delay case, the CIRs are saved as follows:

/link0/cir0: delay, real, imagdataset consisting of delay values (in s) and path amplitudes as real and imaginary values.

For the discrete-delay case, the CIRs are saved as follows:

/link0/cir0: real, imagdataset consisting of samples saved as real and imaginary values.
file = 'Result/result.h5';