cbadc.analog_system.ChebyshevII
- class cbadc.analog_system.ChebyshevII(N: int, Wn: float, rs: float)
Bases:
cbadc.analog_system.AnalogSystemA Chebyshev type II filter’s analog system
This class inherits from
cbadc.analog_system.AnalogSystemand is a convenient way of creating Chebyshev type II filter’s analog system representation.Specifically, we specify the filter by the differential equations
\(\dot{\mathbf{x}}(t) = \mathbf{A} \mathbf{x}(t) + \mathbf{B} u(t) + \mathbf{\Gamma} \mathbf{s}(t)\)
\(\mathbf{y}(t) = \mathbf{C}^\mathsf{T} \mathbf{x}(t) + \mathbf{D} u(t)\)
\(\tilde{\mathbf{s}}(t) = \tilde{\mathbf{\Gamma}}^\mathsf{T} \mathbf{x}(t)\)
where
internally \(\mathbf{A}\) \(\mathbf{B}\), \(\mathbf{C}^\mathsf{T}\), and \(\mathbf{D}\) are determined using the
scipy.signal.iirfilter().Furthermore, as this system is intended as a pure filter and therefore have no
\(\mathbf{\Gamma}\) and \(\tilde{\mathbf{\Gamma}}^\mathsf{T}\) specified.
- Parameters
- 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)
- D
direct matrix
- Type
array_like, shape=(N_tilde, L)
- Raises
InvalidAnalogSystemError – For faulty analog system parametrization.
Methods
__init__(N, Wn, rs)Create a Chebyshev type II filter
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)