preprocess

A preprocess modifies channel data before beamforming.

Input: channel_dataOutput: channel_data
class demodulation

DEMODULATION IQ demodulation via band-pass, down-mix, low-pass, and decimation

Converts RF channel data to IQ (complex) channel data using band-pass filtering, down-mixing to baseband, low-pass filtering, and decimation. Preprocess modifies channel data before beamforming.

Input: uff.channel_data -> Output: uff.channel_data

Properties:

plot_on plot intermediate graphs modulation_frequency modulation frequency [Hz] downsample_frequency sampling frequency after downsampling [Hz] bandpass_frequency_vector band-pass filter transition band [multiple of modulation frequency] lowpass_frequency_vector low-pass filter transition band [multiple of modulation frequency] blp low-pass FIR filter coefficients (dependent) bbp band-pass FIR filter coefficients (dependent)

Example:

obj = preprocess.demodulation();

See also PREPROCESS, FAST_DEMODULATION, HILBERT_TRANSFORM_DEMODULATION, NYQUIST_LIMIT_DEMODULATION

implementers: Alfonso Rodriguez-Molares <alfonso.r.molares@ntnu.no>

Stefano Fiorentini <stefano.fiorentini@ntnu.no>

Property Summary
bbp

Band-pass FIR filter coefficients

blp

Low-pass FIR filter coefficients

downsample_frequency

sampling frequency after downsampling [Hz]

lowpass_frequency_vector

start and end of the transition band, defined

modulation_frequency

modulation frequency [Hz]

plot_on

plot intermediate graphs

Method Summary
go(h)

Check if we can skip calculation

class fast_demodulation

FAST_DEMODULATION Faster IQ demodulation via down-mix, low-pass, and decimation

Converts RF channel data to IQ (complex) channel data using down-mixing to baseband, low-pass filtering, and decimation. Skips band-pass filtering for speed. Preprocess modifies channel data before beamforming.

Input: uff.channel_data -> Output: uff.channel_data

Properties:

plot_on plot intermediate graphs modulation_frequency modulation frequency [Hz] downsample_frequency sampling frequency after downsampling [Hz] lowpass_frequency_vector low-pass filter transition band [multiple of modulation frequency] b low-pass FIR filter coefficients (dependent)

Example:

obj = preprocess.fast_demodulation();

See also PREPROCESS, DEMODULATION

implementers: Alfonso Rodriguez-Molares <alfonso.r.molares@ntnu.no>

Stefano Fiorentini <stefano.fiorentini@ntnu.no>

Property Summary
b

Low-pass FIR filter coefficients

downsample_frequency

sampling frequency after downsampling [Hz]

lowpass_frequency_vector

start and end of the transition band, defined

modulation_frequency

modulation frequency [Hz]

plot_on

plot intermediate graphs

Method Summary
go(h)

Check if we can skip calculation

class hilbert_transform_demodulation

HILBERT_TRANSFORM_DEMODULATION IQ demodulation via Hilbert transform and down-mix

Converts RF channel data to IQ (complex) channel data using the Hilbert transform to obtain the analytic signal, then down-mixing and decimation. Preprocess modifies channel data before beamforming.

Input: uff.channel_data -> Output: uff.channel_data

Properties:

plot_on plot intermediate graphs modulation_frequency modulation frequency [Hz] downsample_frequency sampling frequency after downsampling [Hz]

Example:

obj = preprocess.hilbert_transform_demodulation();

See also PREPROCESS, DEMODULATION

implementers: Bastien Denaire

Stefano Fiorentini <stefano.fiorentini@ntnu.no>

Property Summary
downsample_frequency

sampling frequency after downsampling [Hz]

modulation_frequency

modulation frequency [Hz]

plot_on

plot intermediate graphs

Method Summary
go(h)

Check if we can skip calculation

class nyquist_limit_demodulation

NYQUIST_LIMIT_DEMODULATION IQ demodulation at 2 samples per wavelength

Converts RF channel data to IQ (complex) channel data using a minimal demodulation scheme at the Nyquist limit (Fs/4). Assumes 4 samples per wavelength. Preprocess modifies channel data before beamforming.

Input: uff.channel_data -> Output: uff.channel_data

Properties:

plot_on plot intermediate graphs

Example:

obj = preprocess.nyquist_limit_demodulation();

See also PREPROCESS, DEMODULATION

implementers: Alfonso Rodriguez-Molares <alfonso.r.molares@ntnu.no>

Property Summary
plot_on

plot intermediate graphs

Method Summary
go(h)

check if we can skip calculation

class refocus

REFOCUS Decode multistatic channel data using REFoCUS

Decodes focused multistatic transmit beams into synthetic single-element transmit data using the REFoCUS algorithm. Requires RF channel data. Preprocess modifies channel data before beamforming.

Input: uff.channel_data -> Output: uff.channel_data

Properties:

post_pad_samples samples to pad after data [samples] use_filter enable passband filtering filter_N filter order filter_Wn filter normalized frequency band regularization inverse function handle (e.g. @Hinv_adjoint) decode_parameter parameter for regularization function

Example:

obj = preprocess.refocus();

See also PREPROCESS, CHANNEL_DATA

References:

Ali, R., Herickhoff, C. D., Hyun, D., Dahl, J. J., & Bottenus, N. (2020). “Extending Retrospective Encoding for Robust Recovery of the Multistatic Data Set.” IEEE TUFFC, 67(5), 943-956. https://doi.org/10.1109/TUFFC.2019.2961875

Original REFoCUS code: https://github.com/nbottenus/REFoCUS

implementers: Anders E. Vralstad <anders.e.vralstad@ntnu.no>

Nick Bottenus <Nick.Bottenus@colorado.edu> Rehman Ali Ole Marius Hoel Rindal <omrindal@ifi.uio.no> Nazli Javadi Eshkalak <nazli.javadieshkalak@colorado.edu>

Method Summary
H_model_matrix(h, delays, f, apod)

Model Matrix with Delay, Frequency, and Apodization

Hinv_adjoint(h, delays, f, apod, param)

Forward Model Matrix

Hinv_rsvd(h, delays, f, apod, param)

Forward Model Matrix

Hinv_tikhonov(h, delays, f, apod, param)

Forward Model Matrix

Hinv_tsvd(h, delays, f, apod, param)

Forward Model Matrix