StateSpace

class pmrf.models.surrogates.rational.StateSpace(a: AbstractVariable | Inexact[jaxlib._jax.Array, '...'] = _JitWrapper(fn='NoneType', filter_warning=False, donate_first=False, donate_rest=False), b: AbstractVariable | Inexact[jaxlib._jax.Array, '...'] = None, c: AbstractVariable | Inexact[jaxlib._jax.Array, '...'] = None, d: AbstractVariable | Inexact[jaxlib._jax.Array, '...'] = None, *, z0: complex = 50 + 0j, name: str | None = None, metadata: Any = None, kind: str = 's')

Bases: AbstractSingleProperty

(experimental) A general N-port model defined by continuous-time state-space matrices: H(s) = C * (sI - A)^-1 * B + D

Parameters:
  • a (Param) – State matrix (A). Shape: (state_dim, state_dim)

  • b (Param) – Input matrix (B). Shape: (state_dim, N)

  • c (Param) – Output matrix (C). Shape: (N, state_dim)

  • d (Param) – Feedthrough matrix (D). Shape: (N, N)

primary_matrix(freq: Frequency) Array

The primary matrix (e.g. s, a etc.) as a function of frequency.

The primary matrix represents the matrix returned by pmrf.Model.primary_property, which is either overridden by sub-classes, or is the first proprerty directly overriden out of pmrf.Model.s(), pmrf.Model.a(), pmrf.Model.y(), pmrf.Model.z() (in that order), unless :meth:pmrf.Model.build is overridden, in which case the primary matrix of the built model is returned.

This method can also be overriden itself in order to to dynamically implement one of the matrices as opposed to overriding it explicitly.

Return type:

jnp.ndarray

Raises:

NotImplementedError – If no primary property is overridden.

b: AbstractVariable | Inexact[jaxlib._jax.Array, '...'] = None

Input matrix (B)

c: AbstractVariable | Inexact[jaxlib._jax.Array, '...'] = None

Output matrix (C)

d: AbstractVariable | Inexact[jaxlib._jax.Array, '...'] = None

Feedthrough matrix (D)