Coupled MIMO finite-Hankel model reduction ========================================== .. admonition:: Tutorial goal Reduce a genuinely coupled MIMO state-space system with the finite block-Hankel baseline. .. note:: New to the terminology? See the :doc:`lattice DSP concept map <../../algorithms/concept_map>` and the :doc:`causality/data-use guide <../../theory/causality_and_data_use>` for how online, offline, block, and MIMO examples should be read. Context ------- The diagonal MIMO tutorial shows that independent SISO filters are a special case. This tutorial uses a dense, stable state-space system where each input can affect each output. The goal is to validate the practical MIMO finite-section baseline on a coupled system while keeping it separate from matrix AAK/Nehari algorithms. The reducer works with Markov matrices and returns a reduced state-space realization. This is the natural representation for MIMO; scalar numerator/denominator coefficients are not forced onto a multivariable system. Key idea and equations ---------------------- A coupled MIMO state-space model has .. math:: x_{n+1}=Ax_n+Bu_n,\qquad y_n=Cx_n+Du_n. Its Markov matrices are .. math:: M_0=D,\qquad M_k=CA^{k-1}B\quad(k\ge 1). The finite block-Hankel reducer constructs a reduced model ``(A_r,B_r,C_r,D)`` from the leading singular directions of the block-Hankel matrix. How to read the result ---------------------- Look for nonzero off-diagonal channels, block-Hankel singular-value decay, decreasing Markov/output error with order, and reduced state radii below one. Run command ----------- .. code-block:: bash python examples/mimo_coupled_model_reduction.py Source code ----------- .. literalinclude:: ../../../examples/mimo_coupled_model_reduction.py :language: python :linenos: