cbadc.digital_estimator.DigitalEstimator
- class cbadc.digital_estimator.DigitalEstimator(analog_system: cbadc.analog_system.AnalogSystem, digital_control: cbadc.digital_control.DigitalControl, eta2: float, K1: int, K2: int = 0, stop_after_number_of_iterations: int = 9223372036854775808, Ts: Optional[float] = None, mid_point: bool = False, downsample: int = 1)
Bases:
Iterator[numpy.ndarray]Batch estimator implementation.
The digital estimator estimates a filtered version \(\hat{\mathbf{u}}(t)\) (shaped by
signal_transfer_function()) of the input signal \(\mathbf{u}(t)\) from a sequence of control signals \(\mathbf{s}[k]\).Specifically, the estimates are computed as
\(\overrightarrow{\mathbf{m}}[k] = \mathbf{A}_f \overrightarrow{\mathbf{m}}[k-1] + \mathbf{B}_f \mathbf{s}[k-1]\),
\(\overleftarrow{\mathbf{m}}[k] = \mathbf{A}_b \overrightarrow{\mathbf{m}}[k+1] + \mathbf{B}_b \mathbf{s}[k]\),
and
\(\hat{\mathbf{u}}(k T) = \mathbf{W}^\mathsf{T}\left(\overleftarrow{\mathbf{m}}[k] - \overrightarrow{\mathbf{m}}[k]\right)\)
where \(\mathbf{A}_f, \mathbf{A}_b \in \mathbb{R}^{N \times N}\), \(\mathbf{B}_f, \mathbf{B}_b \in \mathbb{R}^{N \times M}\), and \(\mathbf{W}^\mathsf{T} \in \mathbb{R}^{L \times N}\) are the precomputed filter coefficient based on the choice of
cbadc.analog_system.AnalogSystemandcbadc.digital_control.DigitalControl.- Parameters
analog_system (
cbadc.analog_system.AnalogSystem) – an analog system (necessary to compute the estimators filter coefficients).digital_control (
cbadc.digital_control.DigitalControl) – a digital control (necessary to determine the corresponding DAC waveform).eta2 (float) – the \(\eta^2\) parameter determines the bandwidth of the estimator.
K1 (int) – batch size.
K2 (int, optional) – lookahead size, defaults to 0.
stop_after_number_of_iterations (int) – determine a max number of iterations by the iterator, defaults to \(2^{63}\).
Ts (float, optional) – the sampling time, defaults to the time period of the digital control.
mid_point (bool, optional) – set samples in between control updates, i.e., \(\hat{u}(kT + T/2)\) , defaults to False.
downsample (int, optional) – set a downsampling factor compared to the control signal rate, defaults to 1, i.e., no downsampling.
- analog_system
analog system as in
cbadc.analog_system.AnalogSystemor from derived class.
- digital_control
digital control as in
cbadc.digital_control.DigitalControlor from derived class.
- control_signal
a iterator suppling control signals as
cbadc.digital_control.DigitalControl.
- number_of_iterations
number of iterations until iterator raises
StopIteration.- Type
int
- downsample
The downsampling factor compared to the rate of the control signal.
- Type
int, optional
- mid_point
estimated samples shifted in between control updates, i.e., \(\hat{u}(kT + T/2)\).
- Type
bool
- K1
number of samples per estimate batch.
- Type
int
- K2
number of lookahead samples per computed batch.
- Type
int
- Ts
spacing between samples in seconds.
- Type
float
- Af
The Af matrix
- Type
array_like, shape=(N, N), readonly
- Ab
The Ab matrix
- Type
array_like, shape=(N, N), readonly
- Bf
The Bf matrix
- Type
array_like, shape=(N, M), readonly
- Bb
The Bb matrix
- Type
array_like, shape=(N, M), readonly
- WT
The W matrix transposed
- Type
array_like, shape=(L, N), readonly
- Yields
array_like, shape=(L,) – an input estimate sample \(\hat{\mathbf{u}}(t)\)
Methods
__init__(analog_system, digital_control, ...)Compute the control signal transfer function at the angular frequencies of the omega array.
noise_transfer_function(omega)Compute the noise transfer function (NTF) at the angular frequencies of the omega array.
set_iterator(control_signal_sequence)Set iterator of control signals
signal_transfer_function(omega)Compute the signal transfer function (STF) at the angular frequencies of the omega array.
- control_signal_transfer_function(omega: numpy.ndarray)
Compute the control signal transfer function at the angular frequencies of the omega array.
Specifically, computes
\(\begin{pmatrix}\hat{u}_1(\omega) / s_1(\omega) & \dots & \hat{u}_1(\omega) / s_M(\omega) \\ \vdots & \ddots & \vdots \\ \hat{u}_L(\omega) / s_1(\omega) & \dots & \hat{u}_L(\omega) / s_M(\omega) \end{pmatrix}= \mathbf{G}( \omega)^\mathsf{H} \left( \mathbf{G}( \omega)\mathbf{G}( \omega)^\mathsf{H} + \eta^2 \mathbf{I}_N \right)^{-1} \bar{\mathbf{G}}( \omega)\)
for each angular frequency in omega where where \(\bar{\mathbf{G}}( \omega)= \mathbf{C}^\mathsf{T} \left(\mathbf{A} - i \omega \mathbf{I}_N\right)^{-1} \mathbf{\Gamma} \in\mathbb{R}^{N \times M}\) is the transfer function from the control signals to the output and \(\mathbf{I}_N\) represents a square identity matrix.
- Parameters
omega (array_like, shape=(K,)) – an array_like object containing the angular frequencies for evaluation.
- Returns
return STF evaluated at K different angular frequencies.
- Return type
array_like, shape=(L, M, K)
- noise_transfer_function(omega: numpy.ndarray)
Compute the noise transfer function (NTF) at the angular frequencies of the omega array.
Specifically, computes
\(\text{NTF}( \omega) = \mathbf{G}( \omega)^\mathsf{H} \left( \mathbf{G}( \omega)\mathbf{G}( \omega)^\mathsf{H} + \eta^2 \mathbf{I}_N \right)^{-1}\)
for each angular frequency in omega where where \(\mathbf{G}(\omega)\in\mathbb{R}^{N \times L}\) is the ATF matrix of the analog system and \(\mathbf{I}_N\) represents a square identity matrix.
- Parameters
omega (array_like, shape=(K,)) – an array_like object containing the angular frequencies for evaluation.
- Returns
return NTF evaluated at K different angular frequencies.
- Return type
array_like, shape=(L, N_tilde, K)
- set_iterator(control_signal_sequence: Iterator[numpy.ndarray])
Set iterator of control signals
- Parameters
control_signal_sequence (iterator) – a iterator which outputs a sequence of control signals.
- signal_transfer_function(omega: numpy.ndarray)
Compute the signal transfer function (STF) at the angular frequencies of the omega array.
Specifically, computes
\(\text{STF}( \omega) = \mathbf{G}( \omega)^\mathsf{H} \left( \mathbf{G}( \omega)\mathbf{G}( \omega)^\mathsf{H} + \eta^2 \mathbf{I}_N \right)^{-1} \mathbf{G}( \omega)\)
for each angular frequency in omega where where \(\mathbf{G}(\omega)\in\mathbb{R}^{N \times L}\) is the ATF matrix of the analog system and \(\mathbf{I}_N\) represents a square identity matrix.
- Parameters
omega (array_like, shape=(K,)) – an array_like object containing the angular frequencies for evaluation.
- Returns
return STF evaluated at K different angular frequencies.
- Return type
array_like, shape=(L, K)