How do you implement the following function:

$$[Z^d, P^d, K^d] = \text{fcn} \,(Z^c, P^c, K^c),$$

where $Z^c = [z^c_m, ..., z^c_1]$, $P^c = [p^c_m, ..., p^c_1]$, and $K^c$ are zeros, poles, and gain of the continuous-time TF, and similarly $Z^d$, $P^d$, and $K^d$ are zeros, poles, and gain of the equivalent discrete-time TF with sampling time of $T_s$.

I have tried the following but it did not give me the correct answer:

$Z^d = e^{Z^c \times T_s}$

$P^d = e^{P^c \times T_s}$

$K^d = 1-e^{-K^c \times T_s}$ ---> (is the minus sign right?)

I am looking for some conversion formula that can handle all cases (including single/multiple poles or zeros).

Note: I do not want to use any Matlab built-in functions like c2d(), zp2tf(), or tf().


1 Answer 1


there are at least 3, likely more, methods.

  1. $z = e^{sT}$
  2. impulse invariant
  3. bilinear transform

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.