Asked by Richard
on 19 Sep 2011

I've been attempting to reduce the order of a state space model, for example:

sys=ss(A,B,C,D)

sys_reduced=reduce(sys,10)

which works fine, but does anyone know how to calculate the initial conditions for this reduced system (assuming the initial system had initial conditions)

Answer by Richard
on 26 Feb 2013

Accepted answer

To answer my own question:

The function [balancedModel,g,T,Ti]=balreal(modelOld) gives a new model which has as many states as the old model BUT they are in decending order of importance. It also gives g which shows how important each state is and T which transforms the old model into the new WHICH CAN ALSO BE USED TO TRANSFORM THE INITIAL CONDITIONS, Ti is the reverse transform

newIntialConditions=T*OldIntialConditions;

modred can then be used to reduce the model order to whatever you want

ReducedModel=modred(ballancedModel,ReduceStatesTo:NumberOfStatesInOldModel);

The initial conditions must of course also be trimmed to the right number of states

http://www.mathworks.co.uk/help/toolbox/control/ref/balreal.html

Opportunities for recent engineering grads.

## 2 Comments

## Richard (view profile)

Direct link to this comment:http://uk.mathworks.com/matlabcentral/answers/16143#comment_90410

To answer my own question:

The function [ModelNew,g,T,Ti]=balreal(modelOld) gives a new model which has as many states as the old model BUT they are in decending order of importance. It also gives g which shows how important each state is and T which transforms the old model into the new WHICH CAN ALSO BE USED TO TRANSFORM THE INITIAL CONDITIONS, Ti is the reverse transform

newIntialConditions=T*OldIntialConditions;

modred can then be used to reduce the model order to whatever you want

ReducedModel=modred(BallencedModel,ReduceStatesTo:NumberOfStatesInOldModel);

The initial conditions must of course also be trimmed to the right number of states

http://www.mathworks.co.uk/help/toolbox/control/ref/balreal.html

## Kaustubha Govind (view profile)

Direct link to this comment:http://uk.mathworks.com/matlabcentral/answers/16143#comment_90414

Richard: Thanks for coming back to the forum with your answer. Could you perhaps post this as an answer instead of as a comment. Feel free to accept your own answer.