MATLAB: How to set the initial value for the output, “y[1]”, when using the LSIM function in Control Systems Toolbox 8.1 (R2008a)

Control System Toolboxssux

I am using the function LSIM with a transfer function model. The following code produces an output that initializes at zero even when the x0 argument is set to three:
t = linspace(0,100*pi,1024);
u = 3 + sin(t);
H = tf([1 1],[1 3 3 2]);
lsim(H,u,t,3,'foh')

Best Answer

When using a transfer function system model, the ability to set an initial value for the output is not available in Control System Toolbox 8.1 (R2008a).
To work around this issue, use a state-space system model. Set the initial state "x0" so that your initial output takes the desired value based on the following state-space equation:
y[0] = C*x[0] + D*u[0]
Consider the following example:
t = linspace(0,100*pi,1024);
u = 3 + sin(t);
H = tf([1 1],[1 3 3 2]);
sys = ss(H)
The model "sys" has vales [0 0.5 0.5] for "C" and zero for "D". To achieve an initial output of "3", you can use an initial state of [0;3;3].
lsim(H,u,t,[0;3;3],'foh')