I would like to approximate a delay via the pade approximation. I set a normal delay via the exponential term and I set a delay via the pade approximation and I look the difference between the both with a bode plot and a step response. This is totaly different ... So this is not an approximation ... Where is my error ?

enter image description here

enter image description here

enter image description here

Have a nice day :)


2 Answers 2


You need to properly select a time vector for the step function. I suspect that Matlab has trouble automatically selecting a good time vector for small delays.

try this

close all;
clear all;

s = tf('s');

sys_retard = exp(-2E-6*s);
sys_retard_pade = pade(sys_retard, 3);

T = linspace(0, 10*2E-6, 1000);

output1 = step(sys_retard, T);
output2 = step(sys_retard_pade, T);
plot(T, output1,'b', T, output2,'r');

enter image description here

Edit :

Try the same thing for your bode plot. Select the frequency vector yourself and aim for a good resolution.

  • 1
    $\begingroup$ The same probably also holds for the frequency vector in the Bode plot. $\endgroup$
    – fibonatic
    Commented Jun 17, 2021 at 15:29
  • $\begingroup$ yeah, see my edit $\endgroup$
    – Ben
    Commented Jun 17, 2021 at 15:32

The Padé approximation technique seeks to find a rational transfer function that matches the Taylor series expansion of the function being approximated to as many terms as possible. From what the Matlab manual says, it looks like this is what the pade method is doing.

If you want the approximant to match the Bode plot, use a different approximation technique. If you want the approximant to match the step responds, also use a different technique.


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.