State Space Model in forma canonica controllabile
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
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.