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].
mod = sDomainFit(a, pl) [mod, resp] = sDomainFit(a, pl) [mod, resp, resids] = sDomainFit(a, pl) [mod, resp, resids, rmse] = sDomainFit(a, pl)
| 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] |
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:
The function can also perform a single loop without taking care of the stop conditions. This happens when 'AutoSearch' parameter is set to 'off'.