Convert model from continuous to discrete time
sysd = c2d(sys,Ts)
sysd = c2d(sys,Ts,method)
sysd = c2d(sys,Ts,opts)
[sysd,G] = c2d(sys,Ts,method)
[sysd,G] = c2d(sys,Ts,opts)
G that maps the continuous initial conditions x0 and u0 of
the state-space model
sys to the discrete-time
initial state vector x .
optional. To specify additional discretization options, use
system model (except frequency response data models).
The following identified linear systems cannot be discretized directly:
For the syntax
String specifying a discretization method:
For more information about discretization methods, see Continuous-Discrete Conversion Methods.
Discretization options. Create
Discrete-time model of the same type as the input system
Matrix relating continuous-time initial conditions x0 and u0 of
the state-space model
For state-space models
with time delays,
Discretize the following continuous-time transfer function:
This system has an input delay of 0.3 s. Discretize the system using the triangle (first-order-hold) approximation with sample time
Ts = 0.1 s.
H = tf([1 -1],[1 4 5],'InputDelay', 0.3); Hd = c2d(H,0.1,'foh');
Compare the step responses of the continuous-time and discretized systems.
Discretize the following delayed transfer function using zero-order hold on the input, and a 10-Hz sampling rate.
h = tf(10,[1 3 10],'iodelay',0.25); hd = c2d(h, 0.1)
hd = 0.01187 z^2 + 0.06408 z + 0.009721 z^(-3) * ---------------------------------- z^2 - 1.655 z + 0.7408 Sample time: 0.1 seconds Discrete-time transfer function.
In this example, the discretized model
hd has a delay of three sampling periods. The discretization algorithm absorbs the residual half-period delay into the coefficients of
Compare the step responses of the continuous-time and discretized models.
Discretize a state-space model with time delay, using a Thiran filter to model fractional delays:
sys = ss(tf([1, 2], [1, 4, 2])); % create a state-space model sys.InputDelay = 2.7 % add input delay
a = x1 x2 x1 -4 -2 x2 1 0 b = u1 x1 2 x2 0 c = x1 x2 y1 0.5 1 d = u1 y1 0 Input delays (listed by channel): 2.7 Continuous-time model.
c2dOptions to create a set of discretization
options, and discretize the model. This example uses the Tustin discretization
opt = c2dOptions('Method', 'tustin', 'FractDelayApproxOrder', 3); sysd1 = c2d(sys, 1, opt) % 1s sample time
a = x1 x2 x3 x4 x5 x1 -0.4286 -0.5714 -0.00265 0.06954 2.286 x2 0.2857 0.7143 -0.001325 0.03477 1.143 x3 0 0 -0.2432 0.1449 -0.1153 x4 0 0 0.25 0 0 x5 0 0 0 0.125 0 b = u1 x1 0.002058 x2 0.001029 x3 8 x4 0 x5 0 c = x1 x2 x3 x4 x5 y1 0.2857 0.7143 -0.001325 0.03477 1.143 d = u1 y1 0.001029 Sample time: 1 Discrete-time model.
x5corresponding to a third-order Thiran filter. Since the time delay divided by the sample time is 2.7, the third-order Thiran filter (
FractDelayApproxOrder= 3) can approximate the entire time delay.
Discretize an identified, continuous-time transfer function and compare its performance against a directly estimated discrete-time model
Estimate a continuous-time transfer function and discretize it.
load iddata1 sys1c = tfest(z1,2); sys1d = c2d(sys1c,0.1,'zoh');
Estimate a second order discrete-time transfer function.
sys2d = tfest(z1,2,'Ts',0.1);
Compare the two models.
The two systems are virtually identical.
Discretize an identified state-space model to build a one-step ahead predictor of its response.
load iddata2 sysc = ssest(z2,4); sysd = c2d(sysc,0.1,'zoh'); [A,B,C,D,K] = idssdata(sysd); Predictor = ss(A-K*C,[K B-K*D],C,[0 D],0.1);
Predictor is a two input model which
uses the measured output and input signals
([z1.y z1.u]) to
1-step predicted response of
Use the syntax
sysd = c2d(sys,Ts,method) to
sys using the default options for
To specify additional discretization options, use the syntax
To specify the
tustin method with
frequency prewarping (formerly known as the
PrewarpFrequency option of
For information about the algorithms for each
method, see Continuous-Discrete Conversion Methods.