System identification in z-domain is performed with the function ao/zDomainFit .
It is based on a modeified version of the vector fitting algorithm that was
chenged to fit in z-domain. Details on the agorithm can be found in [1 - 3].
Call
mod = zDomainFit(a, pl)
[mod, resp] = zDomainFit(a, pl)
[mod, resp, resids] = zDomainFit(a, pl)
[mod, resp, resids, rmse] = zDomainFit(a, pl)
Inputs
- a - input AOs to fit to. If you provide more than one AO as
input, they will be fitted together with a common set
of poles. Only frequency domain (fsdata) data can be
fitted. Each non fsdata object will be ignored. Input
objects must have the same number of elements.
- pl - parameter list. See the list of function parameeters below.
Outputs
- mod - model, a bank of parallel miir filters for each input AO.
- resp - model frequency response.
- resids - analysis object containing the fit residuals.
- rmse - analysis object containing the root mean squared
error progression during the fitting loop.
Algorithm description
The function performs a fitting loop to automatically identify model
order and parameters in z-domain. Output is a z-domain model expanded
in partial fractions:
Identification loop stops when the stop condition is reached.
Stop criteria are based on two different approachs:
- Log residuals difference and root mean squared error
- Log Residuals difference
Check if the minimum of the logarithmic difference between data and
residuals is larger than a specified value. ie. if the conditioning
value is 2, the function ensures that the difference between data and
residuals is at lest 2 order of magnitude lower than data itsleves.
- Root Mean Squared Error
Check that the variation of the root mean squared error is lower than
10^(-1*value).
- Residuals spectral flatness and root mean squared error
- Residuals Spectral Flatness
In case of a fit on noisy data, the residuals from a good fit are
expected to be as much as possible similar to a white noise. This
property can be used to test the accuracy of a fit procedure. In
particular it can be tested that the spectral flatness coefficient of
the residuals is larger than a certain qiantity sf such that 0 < sf < 1.
- Root Mean Squared Error
Check that the variation of the root mean squared error is lower than
10^(-1*value).
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'.
Parameters
- 'FS'
It is the sampling frequency. If it is left
empty sampling frequency is searched in the
input AOs or it is calculated as 2 of the
maximum frequency reported in AOs xvalues.
[Default []].
- 'AutoSearch'
'on': Parform a full automatic search for the
transfer function order. The fitting
procedure will stop when stop conditions
defined by 'ResLogDiff' and 'RMSE' are
satisfied. [Default]
'off': Perform a fitting loop as long as the
number of iteration reach 'maxiter'. The order
of the fitting function will be 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 starting poles are
internally assigned. [Default []]
- 'StartPolesOpt'
Define the characteristics of internally
assigned starting poles. Admitted values
are:
'real' linspaced real poles
'c1' and 'c2' complex poles on unit circle.
- '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' Specify the characteristics of the internally
assigned weights. Admitted values are:
- 'ones' assigns weights equal to 1 to all data.
- 'abs' weights data with 1./abs(y) [Default]
- 'sqrt' weights data with 1./sqrt(abs(y))
- 'ResLogDiff'
check if the log difference between data and
residuals is larger than the value indicated.
Left it empty ([]) if you want to use the
residuals spectral flatness criterion for
checking the 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 it is ignored. [Default 0.5]
- 'RMSE'
This allow to check that the variation of
root mean squared error is lower than
10^(-1*value). [Default 8]
- 'Plot' Plot fit result: 'on' or 'off' [default, off]
- 'ForceStability'
Force poles to be stable, values are
'on' or 'off'. [Default 'off']
- 'CheckProgress'
Disply the status of the fit iteration.
Values are 'on and 'off'. [Default 'off']
References
- 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.
- B. Gustavsen, "Improving the Pole Relocating Properties of Vector
Fitting", IEEE Trans. Power Delivery vol. 21, no. 3, pp.
1587-1592, July 2006.
- Y. S. Mekonnen and J. E. Schutt-Aine, "Fast broadband
macromodeling technique of sampled time/frequency data using
z-domain vector-fitting method", Electronic Components and
Technology Conference, 2008. ECTC 2008. 58th 27-30 May 2008 pp.
1231 - 1235.