Im trying to extract the State-Space-Model for an cascaded Buck/Boost-Converter from an set of Transfer-functions \$ G(s)\$ (which I generated with Plecs/Matlab).


First of all I want to analyse the Buck-Modus (Sboost=0).

The State-Space-Model should look like this:

\$ \begin{align} \dot{\vec{\Delta\mathrm{x}}} = \begin{bmatrix} \dot{\Delta \mathrm{uC1}} \\[0.5em] \dot{\Delta\mathrm{iL}} \\[0.5em] \dot{\Delta\mathrm{uC2}}\\ \end{bmatrix} = \begin{bmatrix} \mathrm{A_{11}} & \mathrm{A_{12}} & \mathrm{A_{13}} \\[0.5em] \mathrm{A_{21}} & \mathrm{A_{22}} & \mathrm{A_{23}} \\[0.5em] \mathrm{A_{31}} & \mathrm{A_{32}} & \mathrm{A_{33}} \\ \end{bmatrix} \cdot \begin{bmatrix} \Delta\mathrm{uC1} \\[0.5em] \Delta\mathrm{iL} \\[0.5em] \Delta\mathrm{uC2} \\ \end{bmatrix} + \begin{bmatrix} \mathrm{B_{11}} & \mathrm{B_{12}} & \mathrm{B_{13}} \\[0.5em] \mathrm{B_{21}} & \mathrm{B_{22}} & \mathrm{B_{23}} \\[0.5em] \mathrm{B_{31}} & \mathrm{B_{32}} & \mathrm{B_{33}} \\ \end{bmatrix} \cdot \begin{bmatrix} \Delta\mathrm{Uin} \\[0.5em] \Delta\mathrm{Uac} \\[0.5em] \Delta\delta \end{bmatrix} \end{align}\$

As you can see, my Buck/Boost-Converter contains 3 State-Variables. I did an Impulse-Response Analysis in PLECS (Simulation) to obtain the Bode-Plot from the perturbation in an equilibrium Point.

After that I used \$\mathrm{tfest}()\$ in Matlab to generate \$G(s)\$ for the Bode-Plot.

I have following Transfer-Functions:

For \$\mathrm{uC1}\$: \$ \dfrac{\mathrm{uC1}}{\mathrm{Uin}}(s),\dfrac{\mathrm{uC1}}{\mathrm{Uac}}(s),\dfrac{\mathrm{uC1}}{\delta}(s) \$

For \$\mathrm{iL}\$: \$ \dfrac{\mathrm{iL}}{\mathrm{Uin}}(s),\dfrac{\mathrm{iL}}{\mathrm{Uac}}(s),\dfrac{\mathrm{iL}}{\delta}(s) \$

For \$\mathrm{uC2}\$: \$ \dfrac{\mathrm{uC2}}{\mathrm{Uin}}(s),\dfrac{\mathrm{uC2}}{\mathrm{Uac}}(s),\dfrac{\mathrm{uC1}}{\delta}(s) \$

and want to convert them into an State-Space-Model. How can I achieve that?


1 Answer 1


In Matlab, you could just apply ss() to your matrix of Transfer-functions and that should do it.

For example,

G = [tf(rand(1,1),rand(1,2)), tf(rand(1,1),rand(1,2)); tf(rand(1,1),rand(1,2)), tf(rand(1,1),rand(1,2))];


and you get


Transfer function 'G' from input 'u1' to output ...

 y1:  -----------------
      0.1398 s + 0.1585

 y2:  -----------------
      0.4479 s + 0.7206

Transfer function 'G' from input 'u2' to output ...

 y1:  ----------------
      0.446 s + 0.4288

 y2:  -----------------
      0.7782 s + 0.0429


ans.a =
               x1          x2          x3          x4
   x1   3.781e-17   5.228e-17  -6.661e-16     0.08869
   x2   6.074e-16   3.508e-16        1.09   9.021e-17
   x3           0          -1      -2.095   9.714e-17
   x4          -1  -5.551e-16           0      -1.664

ans.b =
             u1        u2
   x1  -0.01015   -0.5903
   x2   -0.5066    -1.337
   x3     0.527      1.18
   x4    0.1841    0.3669

ans.c =
          x1     x2     x3     x4
   y1      0      0  1.604      0
   y2      0      0      0  2.869

ans.d =
       u1  u2
   y1   0   0
   y2   0   0

Continuous-time model.

  • \$\begingroup\$ I already thought of that and tried it out, but i dont know how to arrange the tf-Matrix to achieve exactly that State-Space form like i need it. I also got an very high-order state-space Model instead of an 3x3.. maybe you can provide an example? \$\endgroup\$
    – rst_tk
    Feb 16, 2020 at 18:51
  • \$\begingroup\$ Ok, but shouldn’t be the A-Matrix an 2x2 and B also? Assuming 2 State-Variables and 2 Inputs? \$\endgroup\$
    – rst_tk
    Feb 16, 2020 at 21:05
  • \$\begingroup\$ No, that is not how it goes. If we have \$p\$ output and \$m\$ inputs we can say \$C \in \mathbb{R}^{p \times n}\$ and \$B \in \mathbb{R}^{n \times m}\$. But the dimentions of \$A \in \mathbb{R}^{n \times n}\$ are not so easy to determine, it depends on how many (different valued) poles the transfer functions have and how each inputs affects each state. I suggest you look for it online or ask a new question just on how to write MIMO Transfer function matrices into state space equations. \$\endgroup\$
    – jDAQ
    Feb 17, 2020 at 3:58
  • \$\begingroup\$ I there any reason you have not up voted or closed this question? is this not the answer to your question? Any problems/suggestions? \$\endgroup\$
    – jDAQ
    Feb 18, 2020 at 0:10

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.