Main Content

c2d

Convert model from continuous to discrete time

Description

example

sysd= c2d(sysc,Ts)discretizes the continuous-timedynamic system modelsyscusing zero-order hold on the inputs and a sample time ofTs.

example

sysd= c2d(sysc,Ts,method)specifies the discretization method.

example

sysd= c2d(sysc,Ts,opts)specifies additional options for the discretization.

[sysd,G] = c2d(___), wheresysc状态空间模型是,returns a matrix,Gthat maps the continuous initial conditionsx0andu0of the state-space model to the discrete-time initial state vectorx[0].

Examples

collapse all

Discretize the following continuous-time transfer function:

H ( s ) = e - 0 . 3 s s - 1 s 2 + 4 s + 5 .

This system has an input delay of 0.3 s. Discretize the system using the triangle (first-order-hold) approximation with sample timeTs= 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.

step(H,“- - -”,Hd,'--')

Figure contains an axes object. The axes object contains 2 objects of type line. These objects represent H, Hd.

Discretize the following delayed transfer function using zero-order hold on the input, and a 10-Hz sampling rate.

H ( s ) = e - 0 . 2 5 s 1 0 s 2 + 3 s + 1 0 .

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 modelhdhas a delay of three sampling periods. The discretization algorithm absorbs the residual half-period delay into the coefficients ofhd.

Compare the step responses of the continuous-time and discretized models.

step(h,'--',hd,“- - -”)

Figure contains an axes object. The axes object contains 2 objects of type line. These objects represent h, hd.

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 timeTs= 1 second.

opt = c2dOptions('Method','tustin','FractDelayApproxOrder',3); sysd1 = c2d(sys,1,opt)
sysd1 = = (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 statesx3,x4, andx5corresponding 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.

loadiddata1sys1c = 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,sys2d.

compare(z1,sys1d,sys2d)

Figure contains an axes object. The axes object with ylabel y1 contains 3 objects of type line. These objects represent Validation data (y1), sys1d: 70.77%, sys2d: 69.3%.

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.

loadiddata2sysc = ssest(z2,4);

Predict the 1-step ahead predicted response ofsysc.

predict(sysc,z2)

Figure contains an axes object. The axes object with ylabel y1 contains an object of type line. These objects represent Validation data (y1), sysc.

Discretize the model.

sysd = c2d(sysc,0.1,'zoh');

Build a predictor model from the discretized model,sysd.

[A,B,C,D,K] = idssdata(sysd); Predictor = ss(A-K*C,[K B-K*D],C,[0 D],0.1);

Predictoris a two-input model which uses the measured output and input signals([z1.y z1.u])计算互译预测的反应sysc.

Simulate the predictor model to get the same response as thepredictcommand.

lsim(Predictor,[z2.y,z2.u])

Figure contains an axes object. The axes object contains 3 objects of type line. These objects represent Driving inputs, Predictor.

The simulation of the predictor model gives the same response aspredict(sysc,z2).

Input Arguments

collapse all

Continuous-time model, specified as adynamic system modelsuch astf,ss, orzpk.sysccannot be a frequency response data model.sysccan be a SISO or MIMO system, except that the'matched'discretization method supports SISO systems only.

sysccan have input/output or internal time delays; however, the'matched','impulse', and'least-squares'methods do not support state-space models with internal time delays.

The following identified linear systems cannot be discretized directly:

  • idgreymodels whoseFunctionTypeis'c'. Convert toidssmodel first.

  • idprocmodels. Convert toidtforidpolymodel first.

Sample time, specified as a positive scalar that represents the sampling period of the resulting discrete-time system.Tsis inTimeUnit, which is thesysc.TimeUnitproperty.

Discretization method, specified as one of the following values:

  • 'zoh'— Zero-order hold (default). Assumes the control inputs are piecewise constant over the sample timeTs.

  • 'foh'— Triangle approximation (modified first-order hold). Assumes the control inputs are piecewise linear over the sample timeTs.

  • 'impulse'— Impulse invariant discretization

  • 'tustin',并near (Tustin) method. To specify this method with frequency prewarping (formerly known as the'prewarp'method), use thePrewarpFrequencyoption ofc2dOptions.

  • 'matched'— Zero-pole matching method

  • 'least-squares'— Least-squares method

  • 'damped'— Damped Tustin approximation based on theTRBDF2formula for sparse models only.

For information about the algorithms for each conversion method, seeContinuous-Discrete Conversion Methods.

Discretization options, specified as ac2dOptionsobject. For example, specify the prewarp frequency, order of the Thiran filter or discretization method as an option.

Output Arguments

collapse all

Discrete-time model, returned as a dynamic system model of the same type as the input systemsysc.

Whensyscis an identified (IDLTI) model,sysd:

  • Includes both measured and noise components ofsysc. The innovations varianceλof the continuous-time identified modelsysc, stored in itsNoiseVarianceproperty, is interpreted as the intensity of the spectral density of the noise spectrum. The noise variance insysdis thusλ/Ts.

  • Does not include the estimated parameter covariance ofsysc. If you want to translate the covariance while discretizing the model, usetranslatecov.

Mapping of continuous-time initial conditionsx0andu0of the state-space modelsyscto the discrete-time initial state vectorx[0], returned as a matrix. The mapping of initial conditions to the initial state vector is as follows:

x [ 0 ] = G [ x 0 u 0 ]

For state-space models with time delays,c2dpads the matrixGwith zeroes to account for additional states introduced by discretizing those delays. SeeContinuous-Discrete Conversion Methodsfor a discussion of modeling time delays in discretized systems.

Version History

Introduced before R2006a