# Matlab c2d(1/s) is different than z transform tables

c2d is used to convert a model from continuous to discrete time. The official doc states:

sysd = c2d(sysc,Ts) discretizes the continuous-time dynamic system model sysc using zero-order hold on the inputs and a sample time of Ts.

Why is it that when I do:

>> c2d(1/s, 1)


I get:

ans =

1
-----
z - 1

Sample time: 1 seconds
Discrete-time transfer function.


but according to Z-transform tables the z transform of 1/s is

ans =

z
-----
z - 1


Why this discrepancy?

• Probably the integration method. c2d uses the zero order hold by default. Z transform table might use another method. – Jaywalk Feb 6 at 15:18
• The Z-transform table is the result of the backward rectangular rule. – Suba Thomas Feb 6 at 15:36

sys = c2d (sys, tsam, method)


If you do not include the method it will use zero-order hold

c2d(G,1,'zoh')


resulting in $$\frac{1}{z-1}$$

If you pick a different conversion method it gives you different results, but notice that the poles stability will be "conserved"

c2d(G,1,'tustin')


results in $$\frac{0.5z+0.5}{z-1}$$

c2d(G,1,'impulse')


results in $$\frac{z}{z-1}$$

c2d(G,1,'matched')


results in $$\frac{1.052}{z-1}$$