Estimate Transfer Functions with Delays
This example shows how to estimate transfer function models with I/O delays.
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
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
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.