Normally We all know the state space model of the the form

der(x) = F*x(t)+G*u(t)
y = H*x(t)+J*u(t).

However I came across a state space model which has the following form

der(x) = F*x(t)+G*u(t) + c
y = H*x(t)+J*u(t).

Vector c is a constant matrix with same dimensions as Vector G. Actually this constant matrix was introduced in my Plant as due to the model of a gravity component which is always present and not associated with any of the input. We CANNOT assume c is a disturbance as we precisely know c.

One way i tackled it using the following form

der(x) = A*x(t)+[G c]*[u(t) 1]'
y = C*x(t)+D*u(t).

This made my system look like a two input system with second input as constant 1 and changed my G matrix from G to [G c].

However this technique is a serious problem in my full state feedback control and reference tracking as it does not behave normal. I haven't come across this type of SS models. i have searched a lot and just identified them as Affine Non Autonomous Systems Page 11. However I am unable to find some good resource on the web which deals with these types of systems. Every paper I have read is so much mathematically rigorous that it is beyond my understanding.

is there some control theory established for such systems which deals with control-ability, observe-ability, full state feedback and reference tracking? Has someone come across these types of systems?

I am using Matlab for my simulations and using lsim command.


  • \$\begingroup\$ In the system x(t) is 6 x 1, F is 6 x 6, c is 6 x 1, G is 6 x 1 and J = 0. u(t) is 1x1. \$\endgroup\$ Commented Dec 3, 2013 at 2:12

1 Answer 1


For starters, can you tell the dimensions of each matrix ? It will make it easier to think further.

Assuming that u(t) and c are both of same dimensions. If they are, you can just make it : der(x) = F*x(t)+G*[u(t) + c] , because u(t) is an input ( usually the one we control ) and c is also an input, only it's an external one. u(t) suggests it's time varying input, but that's just a general case, it doesn't have to be.

Edit after your comment:

Now that you have explained that u(t) is a 1x1 scalar, I see a solution, that may be too simple to work. You said you are using lsim command in Matlab, so I suppose you pass state space (ss) system model to it. In that case, since according to your comment u(t) is a scalar, G*u(t) is a constant 6x1 vector. Therefore, you can make a substition and say [G*u + c] is your new G matrix. For now I assume you are familiar with this part of using Matlab, but just in case you need a kickstart:

Matlab documentation on this website: LINK Says you can pass systems to lsim in this fashion :

[y,t] = lsim(sys,u,t)
[y,t,x] = lsim(sys,u,t) % for state-space models only
[y,t,x] = lsim(sys,u,t,x0) % with initial state

  • \$\begingroup\$ Added in the comments of the question. Can you please modify the answer now as u(t) and c are not of same dimensions. \$\endgroup\$ Commented Dec 3, 2013 at 2:13

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.