Skip to main content
Engineering LibreTexts

8.4: Linear Transformation of State Variables

  • Page ID
    24427
  • \( \newcommand{\vecs}[1]{\overset { \scriptstyle \rightharpoonup} {\mathbf{#1}} } \)

    \( \newcommand{\vecd}[1]{\overset{-\!-\!\rightharpoonup}{\vphantom{a}\smash {#1}}} \)

    \( \newcommand{\id}{\mathrm{id}}\) \( \newcommand{\Span}{\mathrm{span}}\)

    ( \newcommand{\kernel}{\mathrm{null}\,}\) \( \newcommand{\range}{\mathrm{range}\,}\)

    \( \newcommand{\RealPart}{\mathrm{Re}}\) \( \newcommand{\ImaginaryPart}{\mathrm{Im}}\)

    \( \newcommand{\Argument}{\mathrm{Arg}}\) \( \newcommand{\norm}[1]{\| #1 \|}\)

    \( \newcommand{\inner}[2]{\langle #1, #2 \rangle}\)

    \( \newcommand{\Span}{\mathrm{span}}\)

    \( \newcommand{\id}{\mathrm{id}}\)

    \( \newcommand{\Span}{\mathrm{span}}\)

    \( \newcommand{\kernel}{\mathrm{null}\,}\)

    \( \newcommand{\range}{\mathrm{range}\,}\)

    \( \newcommand{\RealPart}{\mathrm{Re}}\)

    \( \newcommand{\ImaginaryPart}{\mathrm{Im}}\)

    \( \newcommand{\Argument}{\mathrm{Arg}}\)

    \( \newcommand{\norm}[1]{\| #1 \|}\)

    \( \newcommand{\inner}[2]{\langle #1, #2 \rangle}\)

    \( \newcommand{\Span}{\mathrm{span}}\) \( \newcommand{\AA}{\unicode[.8,0]{x212B}}\)

    \( \newcommand{\vectorA}[1]{\vec{#1}}      % arrow\)

    \( \newcommand{\vectorAt}[1]{\vec{\text{#1}}}      % arrow\)

    \( \newcommand{\vectorB}[1]{\overset { \scriptstyle \rightharpoonup} {\mathbf{#1}} } \)

    \( \newcommand{\vectorC}[1]{\textbf{#1}} \)

    \( \newcommand{\vectorD}[1]{\overrightarrow{#1}} \)

    \( \newcommand{\vectorDt}[1]{\overrightarrow{\text{#1}}} \)

    \( \newcommand{\vectE}[1]{\overset{-\!-\!\rightharpoonup}{\vphantom{a}\smash{\mathbf {#1}}}} \)

    \( \newcommand{\vecs}[1]{\overset { \scriptstyle \rightharpoonup} {\mathbf{#1}} } \)

    \( \newcommand{\vecd}[1]{\overset{-\!-\!\rightharpoonup}{\vphantom{a}\smash {#1}}} \)

    \(\newcommand{\avec}{\mathbf a}\) \(\newcommand{\bvec}{\mathbf b}\) \(\newcommand{\cvec}{\mathbf c}\) \(\newcommand{\dvec}{\mathbf d}\) \(\newcommand{\dtil}{\widetilde{\mathbf d}}\) \(\newcommand{\evec}{\mathbf e}\) \(\newcommand{\fvec}{\mathbf f}\) \(\newcommand{\nvec}{\mathbf n}\) \(\newcommand{\pvec}{\mathbf p}\) \(\newcommand{\qvec}{\mathbf q}\) \(\newcommand{\svec}{\mathbf s}\) \(\newcommand{\tvec}{\mathbf t}\) \(\newcommand{\uvec}{\mathbf u}\) \(\newcommand{\vvec}{\mathbf v}\) \(\newcommand{\wvec}{\mathbf w}\) \(\newcommand{\xvec}{\mathbf x}\) \(\newcommand{\yvec}{\mathbf y}\) \(\newcommand{\zvec}{\mathbf z}\) \(\newcommand{\rvec}{\mathbf r}\) \(\newcommand{\mvec}{\mathbf m}\) \(\newcommand{\zerovec}{\mathbf 0}\) \(\newcommand{\onevec}{\mathbf 1}\) \(\newcommand{\real}{\mathbb R}\) \(\newcommand{\twovec}[2]{\left[\begin{array}{r}#1 \\ #2 \end{array}\right]}\) \(\newcommand{\ctwovec}[2]{\left[\begin{array}{c}#1 \\ #2 \end{array}\right]}\) \(\newcommand{\threevec}[3]{\left[\begin{array}{r}#1 \\ #2 \\ #3 \end{array}\right]}\) \(\newcommand{\cthreevec}[3]{\left[\begin{array}{c}#1 \\ #2 \\ #3 \end{array}\right]}\) \(\newcommand{\fourvec}[4]{\left[\begin{array}{r}#1 \\ #2 \\ #3 \\ #4 \end{array}\right]}\) \(\newcommand{\cfourvec}[4]{\left[\begin{array}{c}#1 \\ #2 \\ #3 \\ #4 \end{array}\right]}\) \(\newcommand{\fivevec}[5]{\left[\begin{array}{r}#1 \\ #2 \\ #3 \\ #4 \\ #5 \\ \end{array}\right]}\) \(\newcommand{\cfivevec}[5]{\left[\begin{array}{c}#1 \\ #2 \\ #3 \\ #4 \\ #5 \\ \end{array}\right]}\) \(\newcommand{\mattwo}[4]{\left[\begin{array}{rr}#1 \amp #2 \\ #3 \amp #4 \\ \end{array}\right]}\) \(\newcommand{\laspan}[1]{\text{Span}\{#1\}}\) \(\newcommand{\bcal}{\cal B}\) \(\newcommand{\ccal}{\cal C}\) \(\newcommand{\scal}{\cal S}\) \(\newcommand{\wcal}{\cal W}\) \(\newcommand{\ecal}{\cal E}\) \(\newcommand{\coords}[2]{\left\{#1\right\}_{#2}}\) \(\newcommand{\gray}[1]{\color{gray}{#1}}\) \(\newcommand{\lgray}[1]{\color{lightgray}{#1}}\) \(\newcommand{\rank}{\operatorname{rank}}\) \(\newcommand{\row}{\text{Row}}\) \(\newcommand{\col}{\text{Col}}\) \(\renewcommand{\row}{\text{Row}}\) \(\newcommand{\nul}{\text{Nul}}\) \(\newcommand{\var}{\text{Var}}\) \(\newcommand{\corr}{\text{corr}}\) \(\newcommand{\len}[1]{\left|#1\right|}\) \(\newcommand{\bbar}{\overline{\bvec}}\) \(\newcommand{\bhat}{\widehat{\bvec}}\) \(\newcommand{\bperp}{\bvec^\perp}\) \(\newcommand{\xhat}{\widehat{\xvec}}\) \(\newcommand{\vhat}{\widehat{\vvec}}\) \(\newcommand{\uhat}{\widehat{\uvec}}\) \(\newcommand{\what}{\widehat{\wvec}}\) \(\newcommand{\Sighat}{\widehat{\Sigma}}\) \(\newcommand{\lt}{<}\) \(\newcommand{\gt}{>}\) \(\newcommand{\amp}{&}\) \(\definecolor{fillinmathshade}{gray}{0.9}\)

    Linear State Transformation

    This section describes a general procedure to transform a state variable model into an alternate model using state variables that are linear combinations of the original variables.

    Consider the general state variable model of a SISO system, described as:

    \[\dot{x}(t)=Ax(t)+bu(t) \nonumber \]

    \[y(t)=c^{T} x(t) \nonumber \]

    Define a bilinear transformation of the state variable vector, \(x(t)\), by multiplying with a constant invertible matrix \(P\), resulting in a new set of state variables, \(z(t)\):

    \[z=Px,\; \; \; x=P^{-1} z \nonumber \]

    Substitute the above relations in the state and output equations:

    \[P^{-1} \dot{z}=AP^{-1} z+bu, \;\;y=c^{T} P^{-1} z \nonumber \]

    Multiplying on the left by \(P\) results in a new state variable model:

    \[\dot{z}=PAP^{-1} z+Pbu, \;\;y=c^{T} P^{-1} z \nonumber \]

    The two models share the same transfer function, i.e.,

    \[G(s)=c^{T} P^{-1} (sI-PAP^{-1} )^{-1} Pb=c^{T} (sI-A)^{-1} b \nonumber \]

    Next, we explore the possibility to impart a desired structure to the system matrix through linear transformation of the state variables.

    First, define \(\bar{A}=PAP^{-1} ,\, \, \bar{b}=Pb\); the first equation is alternatively expressed as: \(\bar{A}P=PA\).

    Then, given \(A,\, b\), and the desired structure of \(\bar{A},\, \bar{b}\), the above relations may be used to define the transformation matrix, \(P\). In particular, the transformation to the controller and modal forms is explored below.

    Transformation into Controller Form

    A necessary condition to obtain a linear transformation matrix \(P\) to convert a state variable model into controller form is that the following \(n\times n\) controllability matrix has full rank:

    \[M_{\rm C} =[b,\; Ab,\ldots ,\;A^{n-1} b] \nonumber \]

    The controllability matrix is guaranteed to be of full rank if the transfer function description of the model has the same order, \(n\), as the number of state variables used to describe the system, i.e., there are no pole-zero cancelations in the transfer function, \(G\left(s\right)={\bf c}^T(s{I-A})^{-1}{\bf b}\).

    Next, assume that the controllability matrix, \(M_{\rm C}\), of pair \(\left(A,b\right)\) is of full rank.  Let \(M_{\rm CF}\) denote the controllability matrix of the controller form representation \(\left(\bar{ A}, \bar{ b}\right)\); then, \(M_{\rm CF}\) contains the coefficients of the characteristic polynomial and can be written by inspection.

    The required transformation matrix is defined by:

    \[Q=P^{-1} =M_{\rm C} M_{\rm CF}^{-1} \nonumber \]

    Example \(\PageIndex{1}\)

    The state and output equations for a small DC motor model are given as:

    \[\frac{\rm d}{\rm dt} \left[\begin{array}{c} {i_a } \\ {\omega } \end{array}\right]=\left[\begin{array}{cc} {-100} & {-5} \\ {5} & {-10} \end{array}\right] \left[\begin{array}{c} {i_a} \\ {\omega } \end{array}\right]+\left[\begin{array}{c} {100} \\ {0} \end{array}\right]V_a ,\, \, \, \omega =\left[\begin{array}{cc} {0} & {1} \end{array}\right]\left[\begin{array}{c} {i_a} \\ {\omega } \end{array}\right] \nonumber \]

    The controllability matrix for the model is formed as: \(M_{\rm C} =[b,\; Ab]=\left[\begin{array}{cc} {100} & {-10^{4} } \\ {0} & {500} \end{array}\right]\).

    As the controllability matrix is of full rank, the dc motor model is controllable.

    From the transfer function description, \(G(s)=\frac{500}{s^{2} +110s+1025}\), the controller form realization is obtained as:

    \[\dot{x}=\left[\begin{array}{cc} {0} & {1} \\ {-1025} & {-110} \end{array}\right]x+\left[\begin{array}{c} {0} \\ {1} \end{array}\right]V_a ,\, \, \, \omega =\left[\begin{array}{cc} {500} & {0} \end{array}\right]x \nonumber \]

    The controllability matrix for the controller form realization is given as: \(M_{\rm CF} =\left[\begin{array}{cc} {0} & {1} \\ {1} & {-110} \end{array}\right]\).

    The state transformation matrix for the model is obtained as:

    \[Q=P^{-1} =\left[\begin{array}{cc} {1000} & {100} \\ {500} & {0} \end{array}\right],\quad P=\left[\begin{array}{cc} {0} & {0.002} \\ {0.01} & {-0.02} \end{array}\right] \nonumber \]

    Indeed, \(\overline{A}=PAQ\) matches the system matrix in the controller form.

    Transformation into Modal Form

    A matrix that has a full set of eigenvectors is diagonalizable by a linear transformation matrix when the eigenvectors of \(A\) are selected as the columns of \(P^{-1}\).

    In the event when \(A\) has complex eigenvalues, its eigenvectors are also complex. By placing the real and imaginary parts of the complex eigenvector into separate columns of \(P^{-1}\), the resulting modal form matrix, \(\bar{A}=PAP^{-1} ,\, \, \bar{b}=Pb\), has real entries.

    Example \(\PageIndex{2}\)

    The state and output equations for a mass–spring–damper model are given as:

    \[\frac{\rm d}{\rm dt} \left[\begin{array}{c} {x} \\ {v} \end{array}\right]=\left[\begin{array}{cc} {0} & {1} \\ {-2} & {-2} \end{array}\right]\, \left[\begin{array}{c} {x} \\ {v} \end{array}\right]+\left[\begin{array}{c} {0} \\ {1} \end{array}\right]u,\, \, \, y=\left[\begin{array}{cc} {1} & {0} \end{array}\right]\left[\begin{array}{c} {x} \\ {v} \end{array}\right]. \nonumber \]

    The eigenvalues of the system matrix are: \(-1\pm j1\); the complex eigenvectors are: \(\left[\begin{array}{c} {1} \\ {1\pm j1} \end{array}\right]\).

    By choosing \(P^{-1} =\left[\begin{array}{cc} {1} & {0} \\ {-1} & {1} \end{array}\right]\), the modal form system matrix is obtained as: \(\bar{A}=PAP^{-1} =\left[\begin{array}{cc} {-1} & {1} \\ {-1} & {-1} \end{array}\right]\).

    Example \(\PageIndex{3}\)

    The state variable model of a small DC motor is given as:

    \[\frac{\rm d}{\rm dt} \left[\begin{array}{c} {i_{a} } \\ {\omega } \end{array}\right]=\left[\begin{array}{cc} {-100} & {-5} \\ {5} & {-10} \end{array}\right]\left[\begin{array}{c} {i_a } \\ {\omega } \end{array}\right]+\left[\begin{array}{c} {100} \\ {0} \end{array}\right]V_a , \;\; \omega =\left[\begin{array}{cc} {0} & {1} \end{array}\right]\left[\begin{array}{c} {i_a } \\ {\omega } \end{array}\right] \nonumber \]

    We use MATLAB ‘eig’ command to obtain: \(V=P^{-1} =\left[\begin{array}{cc} {-0.9985} & {0.0556} \\ {0.0556} & {-0.9985} \end{array}\right]\).

    The transformed state variable model has a diagonal structure.

    \[\left[\begin{array}{c} {\dot{x}_{1} } \\ {\dot{x}_{2} } \end{array}\right]=\left[\begin{array}{cc} {-99.72} & {0} \\ {0} & {-10.28} \end{array}\right]\left[\begin{array}{c} {x_{1} } \\ {x_{2} } \end{array}\right]+\left[\begin{array}{c} {-100.47} \\ {-5.6} \end{array}\right]V_a, \;\; \omega =\left[\begin{array}{cc} {0.056} & {-0.998} \end{array}\right]\, \left[\begin{array}{c} {x_{1} } \\ {x_{2} } \end{array}\right] \nonumber \]

    The decoupled system of equations can be easily integrated. Assuming a unit-step input, the state variables are solved as:

    \[x_{1} (t)=1.0075+(x_{10} -1.0075)e^{-t/99.72} \nonumber \]

    \[x_{2} (t)=0.545+(x_{20} -0.545)e^{-t/10.28} \nonumber \]

    where \(x_{10} ,\; x_{20}\) represent the initial conditions on state variables. The output is computed as:

    \[\omega (t)=0.056x_{1} (t)-0.998x_{2} (t) \nonumber \]

    The original state variables are recovered as: \(\left[ \begin{array}{c} i_a \\ \omega \end{array} \right]=P^{-1}\left[ \begin{array}{c} x_1 \\ x_2 \end{array} \right]\), i.e.,

    \[i_a\left(t\right)=-0.9985x_1\left(t\right)+0.0556x_2\left(t\right) \nonumber \]

    \[\omega \left(t\right)=0.0556x_1\left(t\right)-0.9985x_2\left(t\right) \nonumber \]


    This page titled 8.4: Linear Transformation of State Variables is shared under a CC BY-NC-SA 4.0 license and was authored, remixed, and/or curated by Kamran Iqbal.

    • Was this article helpful?