Main Content

Estimate Transfer Functions with Delays

This example shows how to estimate transfer function models with I/O delays.

The tfest command supports estimation of IO delays. In the simplest case, if you specify NaN as the value for the IODelay input argument, tfest estimates the corresponding delay value.

load iddata1 z1
sys = tfest(z1,2,2,NaN); % 2 poles, 2 zeros, unknown transport delay

If you want to assign an initial guess to the value of delay or prescribe bounds for its value, you must first create a template idtf model and configure IODelay using the model's Structure property:

sys0 = idtf([nan nan nan],[1 nan nan]);
sys0.Structure.IODelay.Value = 0.1; % initial guess
sys0.Structure.IODelay.Maximum = 1; % maximum allowable value for delay 
sys0.Structure.IODelay.Free = true; % treat delay as estimatable quantity
sys = tfest(z1,sys0);

If estimation data is in the time-domain, the delays are not estimated iteratively. If a finite initial value is specified, that value is retained as is with no iterative updates. The same is true of discrete-time frequency domain data. Thus in the example above, if data has a nonzero sample time, the estimated value of delay in the returned model sys is 0.1 (same as the initial guess specified for sys0). The delays are updated iteratively only for continuous-time frequency domain data. If, on the other hand, a finite initial value for delay is not specified (e.g., sys0.Structure.IODelay.Value = NaN ), then a value for delay is determined using the delayest function, regardless of the nature of the data.

Determination of delay as a quantity independent of the model's poles and zeros is a difficult task. Estimation of delays becomes especially difficult for multi-input or multi-output data. It is strongly recommended that you perform some investigation to determine delays before estimation. You can use functions such as delayest, arxstruc, selstruc and impulse response analysis to determine delays. Often, physical knowledge of the system or dedicated transient tests (how long does it take for a step change in input to show up in a measured output?) will reveal the value of transport delays. Use the results of such analysis to assign initial guesses as well as minimum and maximum bounds on the estimated values of delays.