State Space Model in forma canonica controllabile

Sep 12 2020

Mathematica per impostazione predefinita mette le realizzazioni del modello dello spazio degli stati in una forma complementare controllabile, come mostrato qui:

tfsys = TransferFunctionModel[(b1 s^2 + b2 s + b3)/(s^3 + a1 s^2 + 
      a2 s + a3 ), s];
StateSpaceModel[tfsys]

Che produce una matrice a blocchi come: $$ \begin{bmatrix}0 & 1 & 0 & 0 \\ 0 & 0 & 1 & 0 \\ -a_3 & -a_2 & -a_1 & 1 \\ b_3 & b_2 & b_1 & 0\end{bmatrix} $$Tuttavia, lo voglio in forma canonica controllabile , che dovrebbe assomigliare a:$$ \begin{bmatrix}-a_1 & -a_2 & -a_3 & 1 \\ 1 & 0 & 0 & 0 \\ 0 & 1 & 0 & 0 \\ b_1 & b_2 & b_3 & 0\end{bmatrix} $$ StateSpaceModeloffre l' StateSpaceRealizationopzione ma ha solo ControllableCompanione ObservableCompanion, nessuna delle quali è ciò che voglio. C'è un modo semplice per ottenere la giusta forma nello spazio degli stati?

Risposte

1 SubaThomas Sep 13 2020 at 05:41
StateSpaceModel[TransferFunctionModel[(b1 s^2 + b2 s + b3)/(s^3 + a1 s^2 + a2 s + a3), s]]

E possiamo ottenere il modulo desiderato selezionando gli stati nell'ordine desiderato.

SystemsModelExtract[%, All, All, Reverse@Range@3]

Non sembra esserci consenso su quale delle precedenti sia la "forma canonica controllabile" corretta. Ecco alcune fonti ( link , link ) che chiamano ciò che viene restituito da Mathematica come forma canonica controllabile.