Main Content

Time-Delay Approximation in Continuous-Time Open-Loop Model

This example shows how to approximate delays in a continuous-time open-loop system using pade.

Padé approximation is helpful when using analysis or design tools that do not support time delays. Using too high an approximation order can result in numerical issues and possibly unstable poles. Therefore, avoid Padé approximations with order N>10.

Create sample open-loop system with an output delay.

s = tf('s');
P = exp(-2.6*s)/(s^2+0.9*s+1);

P is a second-order transfer function (tf) object with a time delay.

Compute the first-order Padé approximation of P.

Pnd1 = pade(P,1)
Pnd1 =
 
             -s + 0.7692
  ----------------------------------
  s^3 + 1.669 s^2 + 1.692 s + 0.7692
 
Continuous-time transfer function.

This command replaces all time delays in P with a first-order approximation. Therefore, Pnd1 is a third-order transfer function with no delays.

Compare the frequency response of the original and approximate models using bodeplot.

bp = bodeplot(P,'-b',Pnd1,'-.r',{0.1,10});
bp.PhaseMatchingEnabled = 'on';
legend('Exact delay','First-Order Pade','Location','SouthWest');

MATLAB figure

The magnitude of P and Pnd1 match exactly. However, the phase of Pnd1 deviates from the phase of P beyond approximately 1 rad/s.

Increase the Padé approximation order to extend the frequency band for which the phase approximation is good.

Pnd3 = pade(P,3);

Compare the frequency response of P, Pnd1, and Pnd3.

bp = bodeplot(P,'-b',Pnd3,'-.r',Pnd1,':k',{0.1 10})
bp = 
  BodePlot with properties:

                 Responses: [3x1 controllib.chart.response.BodeResponse]
           Characteristics: [1x1 controllib.chart.options.CharacteristicsManager]

             FrequencyUnit: "rad/s"
            FrequencyScale: "log"
             MagnitudeUnit: "dB"
            MagnitudeScale: "linear"
                 PhaseUnit: "deg"
          MagnitudeVisible: on
              PhaseVisible: on
      PhaseWrappingEnabled: off
       PhaseWrappingBranch: -180
      PhaseMatchingEnabled: off
    PhaseMatchingFrequency: 0
        PhaseMatchingValue: 0
        MinimumGainEnabled: off
          MinimumGainValue: 0

                   Visible: on
                IOGrouping: "none"
              InputVisible: on
             OutputVisible: on

  Use GET to show all properties

bp.PhaseMatchingEnabled = 'on';
legend('Exact delay','Third-Order Pade','First-Order Pade',...
       'Location','SouthWest');

MATLAB figure

The phase approximation error is reduced by using a third-order Padé approximation.

Compare the time domain responses of the original and approximated systems using stepplot.

stepplot(P,'-b',Pnd3,'-.r',Pnd1,':k')
legend('Exact delay','Third-Order Pade','First-Order Pade',...
       'Location','Southeast');

MATLAB figure

Using the Padé approximation introduces a nonminimum phase artifact ("wrong way" effect) in the initial transient response. The effect is quite pronounced in the first-order approximation, which dips significantly below zero before changing direction. The effect is reduced in the higher-order approximation, which more closely matches the exact system response.

See Also

Related Examples

More About