Convert model from continuous to discrete time
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.
Create a continuous-time state-space model with two states and an input delay.
sys = ss(tf([1,2],[1,4,2])); sys.InputDelay = 2.7
sys = 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 (seconds): 2.7 Continuous-time state-space model.
Discretize the model using the Tustin discretization method and a Thiran filter to model fractional delays. The sample time
Ts = 1 second.
opt = c2dOptions('Method','tustin','FractDelayApproxOrder',3); sysd1 = c2d(sys,1,opt)
sysd1 = 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 seconds Discrete-time state-space model.
The discretized model now contains three additional states
x5 corresponding 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.
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 response of the discretized continuous-time transfer function model,
sys1d, and the directly estimated discrete-time model,
The two systems are almost identical.
Discretize an identified state-space model to build a one-step ahead predictor of its response.
Create a continuous-time identified state-space model using estimation data.
load iddata2 sysc = ssest(z2,4);
Predict the 1-step ahead predicted response of
Discretize the model.
sysd = c2d(sysc,0.1,'zoh');
Build a predictor model from the discretized model,
[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 compute the 1-step predicted response of
Simulate the predictor model to get the same response as the
The simulation of the predictor model gives the same response as
sysc— Continuous-time dynamic system
Continuous-time model, specified as a dynamic system model such as
sysc cannot be a frequency response data model.
sysc can be a SISO or MIMO system, except that the
'matched' discretization method supports SISO systems
sysc can have input/output or internal time delays;
'least-squares' methods do not support state-space
models with internal time delays.
The following identified linear systems cannot be discretized directly:
idgrey models whose
idss model first.
idproc models. Convert to
Ts— Sample time
Sample time, specified as a positive scalar that represents the sampling
period of the resulting discrete-time system.
Ts is in
TimeUnit, which is the
method— Discretization method
Discretization method, specified as one of the following values:
'zoh' — Zero-order hold (default). Assumes the
control inputs are piecewise constant over the sample time
'foh' — Triangle approximation (modified
first-order hold). Assumes the control inputs are piecewise linear
over the sample time
'impulse' — Impulse invariant
'tustin' — Bilinear (Tustin) method. To specify
this method with frequency prewarping (formerly known as the
'prewarp' method), use the
PrewarpFrequency option of
'matched' — Zero-pole matching method
'least-squares' — Least-squares method
For information about the algorithms for each conversion method, see Continuous-Discrete Conversion Methods.
opts— Discretization options
Discretization options, specified as a
c2dOptions object. For
example, specify the prewarp frequency, order of the Thiran filter or
discretization method as an option.
sysd— Discrete-time model
Discrete-time model, returned as a dynamic system model of the same type
as the input system
sysc is an identified (IDLTI) model,
Includes both measured and noise components of
sysc. The innovations variance
λ of the continuous-time identified model
sysc, stored in its
NoiseVarianceproperty, is interpreted as the
intensity of the spectral density of the noise spectrum. The noise
sysd is thus
Does not include the estimated parameter covariance of
sysc. If you want to translate the covariance
while discretizing the model, use
G— Mapping of continuous initial conditions of state-space model to discrete-time initial state vector
Mapping of continuous-time initial conditions x0 and u0 of the state-space model
sysc to the
discrete-time initial state vector x, returned as a matrix. The mapping of initial conditions
to the initial state vector is as follows:
For state-space models with time delays,
c2d pads the matrix
zeroes to account for additional states introduced by discretizing those
delays. See Continuous-Discrete Conversion Methods for
a discussion of modeling time delays in discretized systems.