System identification in s-domain is performed with the function ao/sDomainFit. It is based on a modeified version of the vector fitting algorithm. Details on the agorithm can be found in [1 - 2].

Call

  mod = sDomainFit(a, pl)
 [mod, resp] = sDomainFit(a, pl)
 [mod, resp, resids] = sDomainFit(a, pl)
 [mod, resp, resids, rmse] = sDomainFit(a, pl)

Inputs

Outputs

Parameters

Key Value Description

'AutoSearch'

'on'

Parform a full automatic search for the transfer function order. The fitting procedure stops when stop conditions defined by 'ResLogDiff' and 'RMSE' are satisfied. [Default]

'AutoSearch'

'off'

Perform a fitting loop as long as the number of iteration reach 'maxiter'. The order of the fitting function is that specified in 'minorder'.

'StartPoles'

[]

A vector of starting poles. Providing a fixed set of starting poles fixes the function order. If it is left empty, the starting poles are internally assigned. [Default []].

'StartPolesOpt'

'real'

Start with linearly spaced real poles.

'StartPolesOpt'

'clog'

Start with log-spaced complex poles [Default].

'StartPolesOpt'

'clin'

Start with linearly spaced complex poles.

'maxiter'

Maximum number of allowed iteration. [Deafult 50]

'minorder'

Minimum model function order. [Default 2]

'maxorder'

Maximum model function order. [Default 20]

'weights'

[]

A vector with the desired weights. [Default []]

'weightparam'

'ones'

Assign equal weights to each element of the dataset.

'weightparam'

'abs'

Assign weights as 1./abs(y). [Default]

'weightparam'

'sqrt'

Assign weights as 1./sqrt(abs(y)).

'ResLogDiff'

Check if the log difference between data and residuals is larger than the value indicated. Leave it empty ([]) if you want to use the residuals spectral flatness criterion for checking fit goodness. [Default 2]

'ResFlat'

Check if the spectral flatness coefficient for the rersiduals is larger than the value assigned. Only values sp such that 0 < sp < 1 are allowed. If 'ResLogDiff' is not empty this parameter is ignored. [Default 0.5]

'RMSE'

Check that the variation of root mean squared error is lower than 10^(-1*value). [Default 8]

'ForceStability'

'on'

Force fitted poles to be stable

'ForceStability'

'off'

Do not force fitted poles to be stable. [Default]

'direct term'

'on'

Fit with direct term.

'direct term'

'off'

Fit without direct term. [Default]

'Plot'

'on'

Plot fit result.

'Plot'

'off'

Do not plot fit result. [Default]

'CheckProgress'

'on'

Disply the status of the fit iteration.

'CheckProgress'

'off'

Do not disply the status of the fit iteration. [Default]

Algorithm

The function performs a fitting loop to automatically identify model order and parameters in s-domain. Output is a s-domain model expanded in partial fractions:

                r1              rN
       f(s) = ------- + ... + ------- + d
              s - p1          s - pN

Identification loop stops when the stop condition is reached. Stop criteria are based on two different approachs:

  1. Log residuals difference and root mean squared error
  2. Residuals spectral flatness and root mean squared error
Fitting loop stops when the two stopping conditions are satisfied, in both cases.

The function can also perform a single loop without taking care of the stop conditions. This happens when 'AutoSearch' parameter is set to 'off'.

References

  1. B. Gustavsen and A. Semlyen, "Rational approximation of frequency domain responses by Vector Fitting", IEEE Trans. Power Delivery vol. 14, no. 3, pp. 1052-1061, July 1999.
  2. B. Gustavsen, "Improving the Pole Relocating Properties of Vector Fitting", IEEE Trans. Power Delivery vol. 21, no. 3, pp. 1587-1592, July 2006.