cbadc.analog_system.ChainOfIntegrators
- class cbadc.analog_system.ChainOfIntegrators(beta: numpy.ndarray, rho: numpy.ndarray, kappa: numpy.ndarray)
Bases:
cbadc.analog_system.AnalogSystemRepresents an chain-of-integrators analog system.
This class inherits from
cbadc.analog_system.AnalogSystemand creates a convenient way of creating chain-of-integrator A/D analog systems. For more information about chain-of-integrator ADCs see # page=96/>`_. `chain-of-Integrator ADC <https://www.research-collection.ethz.ch/bitstream/handle/20.500.11850/469192/control-bounded_converters_a_dissertation_by_hampus_malmberg.pdf?sequence=1&isAllowed=yChain-of-integrators analog systems are system goverened by the differential equations,
\(\dot{\mathbf{x}}(t) = \mathbf{A} \mathbf{x}(t) + \mathbf{B} \mathbf{u}(t) + \mathbf{\Gamma} \mathbf{s}(t)\)
\(\mathbf{y}(t) = \mathbf{C}^\mathsf{T} \mathbf{x}(t)\)
\(\tilde{\mathbf{s}}(t) = \tilde{\mathbf{\Gamma}}^\mathsf{T} \mathbf{x}(t)\)
where
\(\mathbf{A} = \begin{pmatrix} \rho_1 & \\ \beta_2 & \rho_2 \\ & \ddots & \ddots \\ & & \beta_N & \rho_N \end{pmatrix}\)
\(\mathbf{B} = \begin{pmatrix} \beta_1 & 0 & \cdots & 0 \end{pmatrix}^\mathsf{T}\)
\(\mathbf{C}^\mathsf{T} = \mathbf{I}_N\)
\(\mathbf{\Gamma} = \begin{pmatrix} \kappa_1 \\ & \ddots \\ & & \kappa_N \end{pmatrix}\)
\(\tilde{\mathbf{\Gamma}}^\mathsf{T} = \mathbf{I}_N\)
- Parameters
beta (array_like, shape=(N,)) – vector with per integrator signal amplification \(\begin{pmatrix}\beta_1 & \cdots & \beta_N \end{pmatrix}\).
rho (array_like, shape=(N,)) – local feedback factor vector \(\begin{pmatrix}\rho_1 & \cdots & \rho_N \end{pmatrix}\).
kappa (array_like, shape=(N,) or shape=(M, N),) – control gain vector \(\begin{pmatrix}\kappa_1 & \cdots & \kappa_N \end{pmatrix}\).
kappa_tilde (array_like, shape=(N, M_tilde), optional) –
- N
state space order \(N\).
- Type
int
- N_tilde
number of signal observations \(\tilde{N}\).
- Type
int
- M
number of digital control signals \(M\).
- Type
int
- M_tilde
number of control signal observations \(\tilde{M}\).
- Type
int
- L
number of input signals \(L\).
- Type
int
- A
system matrix \(\mathbf{A}\).
- Type
array_like, shape=(N, N)
- B
input matrix \(\mathbf{B}\).
- Type
array_like, shape=(N, L)
- CT
signal observation matrix \(\mathbf{C}^\mathsf{T}\).
- Type
array_like, shape=(N_tilde, N)
- Gamma
control input matrix \(\mathbf{\Gamma}\).
- Type
array_like, shape=(N, M)
- Gamma_tildeT
control observation matrix \(\tilde{\mathbf{\Gamma}}^\mathsf{T}\).
- Type
array_like, shape=(M_tilde, N)
See also
Example
>>> import numpy as np >>> from cbadc.analog_system import ChainOfIntegrators >>> beta = np.array([100, 100, 100]) >>> rho = np.array([-1, -1, -1]) >>> kappa = np.array([[100, 100, 100]]).transpose() >>> print(ChainOfIntegrators(beta, rho, kappa)) The analog system is parameterized as: A = [[ -1. 0. 0.] [100. -1. 0.] [ 0. 100. -1.]], B = [[100.] [ 0.] [ 0.]], CT = [[1. 0. 0.] [0. 1. 0.] [0. 0. 1.]], Gamma = [[100. 0. 0.] [ 0. 100. 0.] [ 0. 0. 100.]], and Gamma_tildeT = [[-1. 0. 0.] [ 0. -1. 0.] [ 0. 0. -1.]]
- Raises
InvalidAnalogSystemError – For faulty analog system parametrization.
Methods
__init__(beta, rho, kappa)Create an chain-of-integrators analog system.
Computes the control observation for a given state vector \(\mathbf{x}(t)\) evaluated at time \(t\).
Evaluates the transfer functions between control signals and the system output.
derivative(x, t, u, s)Compute the derivative of the analog system.
Computes the signal observation for a given state vector \(\mathbf{x}(t)\) evaluated at time \(t\).
transfer_function_matrix(omega)Evaluate the analog signal transfer function at the angular frequencies of the omega array.
zpk([input])return zero-pole-gain representation of system
- control_observation(x: numpy.ndarray) numpy.ndarray
Computes the control observation for a given state vector \(\mathbf{x}(t)\) evaluated at time \(t\).
Specifically, returns
\(\tilde{\mathbf{s}}(t) = \tilde{\mathbf{\Gamma}}^\mathsf{T} \mathbf{x}(t)\)
- Parameters
x (array_like, shape=(N,)) – the state vector.
- Returns
the control observation.
- Return type
array_like, shape=(M_tilde,)
- control_signal_transfer_function_matrix(omega: numpy.ndarray) numpy.ndarray
Evaluates the transfer functions between control signals and the system output.
Specifically, evaluates
\(\bar{\mathbf{G}}(\omega) = \mathbf{C}^\mathsf{T} \left(\mathbf{A} - i \omega \mathbf{I}_N\right)^{-1} \mathbf{\Gamma} \in \mathbb{R}^{\tilde{N} \times M}\)
for each angular frequency in omega where \(\mathbf{I}_N\) represents a square identity matrix of the same dimensions as \(\mathbf{A}\) and \(i=\sqrt{-1}\).
- Parameters
omega (array_like, shape=(K,)) – an array_like object containing the angular frequencies for evaluation.
- Returns
the signal transfer function evaluated at K different angular frequencies.
- Return type
array_like, shape=(N_tilde, M, K)
- derivative(x: numpy.ndarray, t: float, u: numpy.ndarray, s: numpy.ndarray) numpy.ndarray
Compute the derivative of the analog system.
Specifically, produces the state derivative
\(\dot{\mathbf{x}}(t) = \mathbf{A} \mathbf{x}(t) + \mathbf{B} \mathbf{u}(t) + \mathbf{\Gamma} \mathbf{s}(t)\)
as a function of the state vector \(\mathbf{x}(t)\), the given time \(t\), the input signal value \(\mathbf{u}(t)\), and the control contribution value \(\mathbf{s}(t)\).
- Parameters
x (array_like, shape=(N,)) – the state vector evaluated at time t.
t (float) – the time t.
u (array_like, shape=(L,)) – the input signal vector evaluated at time t.
s (array_like, shape=(M,)) – the control contribution evaluated at time t.
- Returns
the derivative \(\dot{\mathbf{x}}(t)\).
- Return type
array_like, shape=(N,)
- signal_observation(x: numpy.ndarray) numpy.ndarray
Computes the signal observation for a given state vector \(\mathbf{x}(t)\) evaluated at time \(t\).
Specifically, returns
\(\mathbf{y}(t)=\mathbf{C}^\mathsf{T} \mathbf{x}(t)\)
- Parameters
x (array_like, shape=(N,)) – the state vector.
- Returns
the signal observation.
- Return type
array_like, shape=(N_tilde,)
- transfer_function_matrix(omega: numpy.ndarray) numpy.ndarray
Evaluate the analog signal transfer function at the angular frequencies of the omega array.
Specifically, evaluates
\(\mathbf{G}(\omega) = \mathbf{C}^\mathsf{T} \left(\mathbf{A} - i \omega \mathbf{I}_N\right)^{-1} \mathbf{B} + \mathbf{D}\)
for each angular frequency in omega where \(\mathbf{I}_N\) represents a square identity matrix of the same dimensions as \(\mathbf{A}\) and \(i=\sqrt{-1}\).
- Parameters
omega (array_like, shape=(K,)) – an array_like object containing the angular frequencies for evaluation.
- Returns
the signal transfer function evaluated at K different angular frequencies.
- Return type
array_like, shape=(N_tilde, L, K)
- zpk(input=0)
return zero-pole-gain representation of system
- Parameters
input – determine for which input (in case of L > 1) to compute zpk, defaults to 0.
int – determine for which input (in case of L > 1) to compute zpk, defaults to 0.
optional – determine for which input (in case of L > 1) to compute zpk, defaults to 0.
- Returns
z,p,k the zeros, poles and gain of the system
- Return type
array_like, shape=(?, ?, 1)