Channel file format specifications
The uwa-channels-compatible .mat files must be saved with the following flags:
-v7.3to support large variables and theHDF5file format.-nocompressionto speed up loading.
Required fields
Each .mat file must include the following variables:
h_hat
- Type: Multi-dimensional complex tensor.
- Dimensions:
[delay, receiver, time] - Units:
- Delay axis: sampled at
params.fs_delay[Hz], denoted - Time axis: sampled at
params.fs_time[Hz] - Amplitude: complex baseband impulse response (unitless)
- Delay axis: sampled at
- Description: The estimated time-varying channel impulse response (TVIR) as a function of delay and time . When delay tracking is used, this is the drift-free response ; otherwise it is the drifting response . For a given receiver and time index , the slice along the delay axis is the channel vector , or in the drifting case.
params
A structure with the following scalar fields:
| Field | Type | Unit | Description |
|---|---|---|---|
fs_delay | scalar | Hz | Sampling rate along the delay axis. |
fs_time | scalar | Hz | Sampling rate along the time axis. |
fc | scalar | Hz | Center frequency of the signal used during channel estimation. |
version
- Type: Numeric scalar.
- Description: Dataset format version number (currently
1.0).
Phase/delay tracking fields (optional)
phi_hat, theta_hat, and f_resamp may coexist; the replay engine applies them according to the following precedence:
- If none of the three is present, no Doppler correction is applied.
phi_hattakes precedence overtheta_hat: ifphi_hatis present, it is used andtheta_hatis ignored; if onlytheta_hatis present, it is used instead.f_resamp(see Optional fields) is applied independently of the two phase/delay fields, whether or not either of them is present.
phi_hat (delay tracking)
Type: Numeric matrix, size
[receiver, time]Units: Radians
Sampling rate:
params.fs_delayDescription: The phase estimate , a time-varying phase that encodes both phase rotation and delay drift. In this mode,
h_hatholds the drift-free response . Let denote the delay drift common to all propagation paths. It is related to the phase byUnpacking first reinserts the phase, multiplying the drift-free response by to obtain the signal . It then reinserts the delay drift by evaluating that signal at shifted instants,
where denotes interpolation, implemented here as spline interpolation.
theta_hat (phase tracking only)
Type: Numeric matrix, size
[receiver, time]Units: Radians
Sampling rate:
params.fs_delayDescription: The phase estimate , a time-varying phase correction. In this mode,
h_hatcontains the drifting impulse response (delay drift is embedded in the taps). Only the phase is tracked separately. The baseband received signal is modeled as:where are the transmitted data symbols, is the time-varying impulse response at delay and time with drifting taps, is the symbol interval, is the channel phase, and is the additive complex baseband noise.
Duration constraint
The time dimension of theta_hat or phi_hat and the third dimension of h_hat must span the same duration. The check is written below for theta_hat; the same applies to phi_hat:
size(theta_hat, 2) / params.fs_delay == size(h_hat, 3) / params.fs_time
Optional fields
f_resamp
- Type: Scalar (double precision)
- Units: Unitless resampling factor
- Description: A time-invariant resampling factor applied to the output signal. This is typically the inverse of a resampling operation applied to remove the nominal Doppler frequency offset before channel estimation. It is applied after the time-varying convolution.
meta
The meta structure is optional but strongly encouraged. The following fields are recognized by the toolbox:
| Field | Type | Description |
|---|---|---|
description | string | Free-text description of the experiment. |
nsd | scalar | Samples per symbol in the delay domain. |
nst | scalar | Samples per symbol in the time domain. |
K_1 | scalar | Anti-causal filter length [symbols]. |
K_2 | scalar | Causal filter length [symbols]. |
fc | scalar | Center frequency [Hz]. |
element_spacing | scalar | Array element spacing [m]. |
vertical | logical | true if vertical array. |
delay_tracking | logical | true if delay tracking is enabled (phi_hat present). |
limit | scalar | Lower dB limit for plotting. |
optim | scalar | Optimizer used: 1 LMS, 2 RLS, 3 SFTF. |
mu | scalar | LMS step size (when optim == 1). |
lambda | scalar | Forgetting factor (when optim == 2 or 3). |
regularization | scalar | Regularization factor (when optim == 2 or 3). |
Kf_1 | scalar | PLL loop filter coefficient . |
Kf_2 | scalar | PLL loop filter coefficient . |
nslr | scalar | Delay tracking rate (when delay_tracking == true). |
codename | string | Short identifier for the channel (e.g., "blue_1"). |
Users are free to add additional fields to meta to capture experiment-specific metadata.
Noise file format
Each noise .mat file contains the following fields:
| Field | Type | Description |
|---|---|---|
Fs | scalar | Sampling rate at which noise statistics were measured [Hz]. |
R | scalar | Bandwidth of the recorded noise [Hz]. Despite the field name, this is not the symbol rate used on the channel pages. |
alpha | scalar | Characteristic exponent of the symmetric -stable distribution: 2 Gaussian, < 2 impulsive. |
beta | tensor [M, M, L+1] | Mixing coefficients for spatiotemporal noise coloring, where is the number of array elements and is the maximum lag (both defined below). |
fc | scalar | Center frequency [Hz]. |
version | scalar | Noise struct version number. |
The noise generation function noisegen uses the mixing equation:
Here is the synthetically generated noise on hydrophone , with the hydrophone indices running as . The sampling interval is , the sampling rate being stored in the Fs field, and is the maximum discrete time lag with non-negligible covariance, so that has taps, . The innovations are i.i.d. symmetric -stable variates with zero location and scale ; this scale ensures that the distribution reduces to the standard Gaussian when .