Channel file format specifications

Specification of the required and optional fields in the channel and noise .mat files, including the impulse response, phase/delay tracking, and metadata formats.

The uwa-channels-compatible .mat files must be saved with the following flags:

  • -v7.3 to support large variables and the HDF5 file format.
  • -nocompression to 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 fs=1/Tsf_s = 1/T_s
    • Time axis: sampled at params.fs_time [Hz]
    • Amplitude: complex baseband impulse response (unitless)
  • Description: The estimated time-varying channel impulse response (TVIR) as a function of delay τ\tau and time tt. When delay tracking is used, this is the drift-free response h^(τ,t)\hat{\underline{h}}(\tau, t); otherwise it is the drifting response h^(τ,t)\hat{h}(\tau, t). For a given receiver and time index nn, the slice along the delay axis is the channel vector h^[n]\hat{\underline{\mathbf{h}}}[n], or h^[n]\hat{\mathbf{h}}[n] in the drifting case.

params

A structure with the following scalar fields:

FieldTypeUnitDescription
fs_delayscalarHzSampling rate fsf_s along the delay axis.
fs_timescalarHzSampling rate along the time axis.
fcscalarHzCenter frequency fcf_c 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_hat takes precedence over theta_hat: if phi_hat is present, it is used and theta_hat is ignored; if only theta_hat is 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_delay

  • Description: The phase estimate φ^(nTs)\hat\varphi(nT_s), a time-varying phase that encodes both phase rotation and delay drift. In this mode, h_hat holds the drift-free response h^(τ,t)\hat{\underline{h}}(\tau, t). Let Δτ\Delta\tau denote the delay drift common to all propagation paths. It is related to the phase by

    φ^(nTs)=2πfcΔτ(nTs)\hat\varphi(nT_s) = -2\pi f_c\, \Delta\tau(nT_s)

    Unpacking first reinserts the phase, multiplying the drift-free response by ejφ^(nTs)e^{j\hat\varphi(nT_s)} to obtain the signal yˉr(nTs)\bar y_{\text{r}}(nT_s). It then reinserts the delay drift by evaluating that signal at shifted instants,

    vˉr(nTs)=I[yˉr(nTs+φ^(nTs)2πfc)]\bar v_{\text{r}}(nT_s) = \mathcal{I}\left[\bar y_{\text{r}}\left(nT_s + \frac{\hat\varphi(nT_s)}{2\pi f_c}\right)\right]

    where I[]\mathcal{I}[\cdot] denotes interpolation, implemented here as spline interpolation.

theta_hat (phase tracking only)

  • Type: Numeric matrix, size [receiver, time]

  • Units: Radians

  • Sampling rate: params.fs_delay

  • Description: The phase estimate θ^(nTs)\hat\theta(nT_s), a time-varying phase correction. In this mode, h_hat contains the drifting impulse response h^(τ,t)\hat{h}(\tau, t) (delay drift is embedded in the taps). Only the phase is tracked separately. The baseband received signal is modeled as:

    v(t)=nd(n)h(tnT,t)ejθ(t)+w(t)v(t) = \sum_n d(n)\, h(t - nT, t)\, e^{j\theta(t)} + w(t)

    where d(n)d(n) are the transmitted data symbols, h(τ,t)h(\tau, t) is the time-varying impulse response at delay τ\tau and time tt with drifting taps, TT is the symbol interval, θ(t)\theta(t) is the channel phase, and w(t)w(t) 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:

FieldTypeDescription
descriptionstringFree-text description of the experiment.
nsdscalarSamples per symbol NsN_s in the delay domain.
nstscalarSamples per symbol in the time domain.
K_1scalarAnti-causal filter length [symbols].
K_2scalarCausal filter length [symbols].
fcscalarCenter frequency fcf_c [Hz].
element_spacingscalarArray element spacing \ell [m].
verticallogicaltrue if vertical array.
delay_trackinglogicaltrue if delay tracking is enabled (phi_hat present).
limitscalarLower dB limit for plotting.
optimscalarOptimizer used: 1 LMS, 2 RLS, 3 SFTF.
muscalarLMS step size μ\mu (when optim == 1).
lambdascalarForgetting factor λ\lambda (when optim == 2 or 3).
regularizationscalarRegularization factor (when optim == 2 or 3).
Kf_1scalarPLL loop filter coefficient Kf1K_{f_1}.
Kf_2scalarPLL loop filter coefficient Kf2K_{f_2}.
nslrscalarDelay tracking rate (when delay_tracking == true).
codenamestringShort 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:

FieldTypeDescription
FsscalarSampling rate fsf_s at which noise statistics were measured [Hz].
RscalarBandwidth BB of the recorded noise [Hz]. Despite the field name, this is not the symbol rate RR used on the channel pages.
alphascalarCharacteristic exponent α\alpha of the symmetric α\alpha-stable distribution: 2 Gaussian, < 2 impulsive.
betatensor [M, M, L+1]Mixing coefficients βij(kTs)\beta_{ij}(kT_s) for spatiotemporal noise coloring, where MM is the number of array elements and LL is the maximum lag (both defined below).
fcscalarCenter frequency fcf_c [Hz].
versionscalarNoise struct version number.

The noise generation function noisegen uses the mixing equation:

n^i(nTs)=j=0M1k=0Lβij(kTs)ηj(nTskTs)\hat{n}_i(nT_s) = \sum_{j=0}^{M-1}\sum_{k=0}^{L}\beta_{ij}(kT_s)\,\eta_j(nT_s - kT_s)

Here n^i\hat{n}_i is the synthetically generated noise on hydrophone ii, with the hydrophone indices running as i,j=0,,M1i, j = 0, \ldots, M-1. The sampling interval is Ts=1/fsT_s = 1/f_s, the sampling rate fsf_s being stored in the Fs field, and LL is the maximum discrete time lag with non-negligible covariance, so that βij(kTs)\beta_{ij}(kT_s) has L+1L+1 taps, k=0,,Lk = 0, \ldots, L. The innovations ηj(nTs)Sα(0,1/2)\eta_j(nT_s) \sim \mathcal{S}_\alpha(0, 1/\sqrt{2}) are i.i.d. symmetric α\alpha-stable variates with zero location and scale 1/21/\sqrt{2}; this scale ensures that the distribution reduces to the standard Gaussian N(0,1)\mathcal{N}(0, 1) when α=2\alpha = 2.