# polyestOptions

Option set for `polyest`

## Syntax

`opt = polyestOptionsopt = polyestOptions(Name,Value)`

## Description

`opt = polyestOptions` creates the default options set for `polyest`.

`opt = polyestOptions(Name,Value)` creates an option set with the options specified by one or more `Name,Value` pair arguments.

## Input Arguments

collapse all

### Name-Value Pair Arguments

Specify optional comma-separated pairs of `Name,Value` arguments. `Name` is the argument name and `Value` is the corresponding value. `Name` must appear inside single quotes (`' '`). You can specify several name and value pair arguments in any order as `Name1,Value1,...,NameN,ValueN`.

### `'InitialCondition'` —

Specify how initial conditions are handled during estimation.

`InitialCondition` requires one of the following values:

• `'zero'` — The initial condition is set to zero.

• `'estimate'` — The initial state is treated as an independent estimation parameter.

• `'backcast'` — The initial state is estimated using the best least squares fit.

• `'auto'` — The software chooses the method to handle initial states based on the estimation data.

### `'Focus'` — Estimation focus`'prediction'` (default) | `'simulation'` | `'stability'` | vector | matrix | linear system

Estimation focus that defines how the errors e between the measured and the modeled outputs are weighed at specific frequencies during the minimization of the prediction error, specified as one of the following:

• `'prediction'` — Automatically calculates the weighting function as a product of the input spectrum and the inverse of the noise spectrum. The weighting function minimizes the one-step-ahead prediction. This approach typically favors fitting small time intervals (higher frequency range). From a statistical-variance point of view, this weighting function is optimal. However, this method neglects the approximation aspects (bias) of the fit.

This option focuses on producing a good predictor and does not enforce model stability. Use `'stability'` when you want to ensure a stable model.

• `'simulation'` — Estimates the model using the frequency weighting of the transfer function that is given by the input spectrum. Typically, this method favors the frequency range where the input spectrum has the most power. This method provides a stable model.

• `'stability'` — Same as `'prediction'`, but with model stability enforced.

• Passbands — Row vector or matrix containing frequency values that define desired passbands. For example:

```[wl,wh] [w1l,w1h;w2l,w2h;w3l,w3h;...]```

where `wl` and `wh` represent lower and upper limits of a passband. For a matrix with several rows defining frequency passbands, the algorithm uses union of frequency ranges to define the estimation passband.

Passbands are expressed in `rad/TimeUnit` for time-domain data and in `FrequencyUnit` for frequency-domain data, where `TimeUnit` and `FrequencyUnit` are the time and frequency units of the estimation data.

• SISO filter — Specify a SISO linear filter in one of the following ways:

• A single-input-single-output (SISO) linear system

• `{A,B,C,D}` format, which specifies the state-space matrices of the filter

• `{numerator, denominator}` format, which specifies the numerator and denominator of the filter transfer function

This option calculates the weighting function as a product of the filter and the input spectrum to estimate the transfer function. To obtain a good model fit for a specific frequency range, you must choose the filter with a passband in this range. The estimation result is the same if you first prefilter the data using `idfilt`.

• Weighting vector — For frequency-domain data only, specify a column vector of weights. This vector must have the same length as the frequency vector of the data set, `Data.Frequency`. Each input and output response in the data is multiplied by the corresponding weight at that frequency.

### `'EstCovar'` — Control whether to generate parameter covariance data`true` (default) | `false`

Controls whether parameter covariance data is generated, specified as `true` or `false`.

If `EstCovar` is `true`, then use `getcov` to fetch the covariance matrix from the estimated model.

### `'Display'` — Specify whether to display the estimation progress`'off'` (default) | `'on'`

Specify whether to display the estimation progress, specified as one of the following strings:

• `'on'` — Information on model structure and estimation results are displayed in a progress-viewer window.

• `'off'` — No progress or results information is displayed.

### `'InputOffset'` — Removal of offset from time-domain input data during estimation`[]` (default) | vector of positive integers | matrix

Removal of offset from time-domain input data during estimation, specified as the comma-separated pair consisting of `'InputOffset'` and one of the following:

• A column vector of positive integers of length Nu, where Nu is the number of inputs.

• `[]` — indicates no offset

• Nu-by-Ne matrix — For multiexperiment data, specify `InputOffset` as an Nu-by-Ne matrix. Nu is the number of inputs, and Ne is the number of experiments.

Each entry specified by `InputOffset` is subtracted from the corresponding input data.

### `'OutputOffset'` — Removal of offset from time-domain output data during estimation`[]` (default) | vector | matrix

Removal of offset from time domain output data during estimation, specified as the comma-separated pair consisting of `'OutputOffset'` and one of the following:

• A column vector of length Ny, where Ny is the number of outputs.

• `[]` — indicates no offset

• Ny-by-Ne matrix — For multiexperiment data, specify `OutputOffset` as a Ny-by-Ne matrix. Ny is the number of outputs, and Ne is the number of experiments.

Each entry specified by `OutputOffset` is subtracted from the corresponding output data.

### `'Regularization'` —

Options for regularized estimation of model parameters. For more information on regularization, see Regularized Estimates of Model Parameters.

Structure with the following fields:

• `Lambda` — Constant that determines the bias versus variance tradeoff.

Specify a positive scalar to add the regularization term to the estimation cost.

The default value of zero implies no regularization.

Default: 0

• `R` — Weighting matrix.

Specify a vector of nonnegative numbers or a square positive semi-definite matrix. The length must be equal to the number of free parameters of the model.

For black-box models, using the default value is recommended. For structured and grey-box models, you can also specify a vector of `np` positive numbers such that each entry denotes the confidence in the value of the associated parameter.

The default value of 1 implies a value of `eye(npfree)`, where `npfree` is the number of free parameters.

Default: 1

• `Nominal` — The nominal value towards which the free parameters are pulled during estimation.

The default value of zero implies that the parameter values are pulled towards zero. If you are refining a model, you can set the value to `'model'` to pull the parameters towards the parameter values of the initial model. The initial parameter values must be finite for this setting to work.

Default: 0

### `'SearchMethod'` —

Search method used for iterative parameter estimation.

`SearchMethod` requires one of the following values:

• `'gn'` — The subspace Gauss-Newton direction. Singular values of the Jacobian matrix less than `GnPinvConst*eps*max(size(J))*norm(J)` are discarded when computing the search direction. J is the Jacobian matrix. The Hessian matrix is approximated by JTJ. If there is no improvement in this direction, the function tries the gradient direction.

• `'gna'` — An adaptive version of subspace Gauss-Newton approach, suggested by Wills and Ninne. Eigenvalues less than `gamma*max(sv)` of the Hessian are ignored, where sv are the singular values of the Hessian. The Gauss-Newton direction is computed in the remaining subspace. gamma has the initial value `InitGnaTol` (see `Advanced` for more information). gamma is increased by the factor `LMStep` each time the search fails to find a lower value of the criterion in less than 5 bisections. gamma is decreased by a factor of `2*LMStep` each time a search is successful without any bisections.

• `'lm'` — Uses the Levenberg-Marquardt method. The next parameter value is `-pinv(H+d*I)*grad` from the previous one. H is the Hessian, I is the identity matrix, and grad is the gradient. d is a number that is increased until a lower value of the criterion is found.

• `'lsqnonlin'` — Uses `lsqnonlin` optimizer from Optimization Toolbox™ software. This search method can handle only the Trace criterion.

• `'grad'` — The steepest descent gradient search method.

• `'auto'` — The algorithm chooses one of the preceding options. The descent direction is calculated using `'gn'`, `'gna'`, `'lm'`, and `'grad'` successively at each iteration. The iterations continue until a sufficient reduction in error is achieved.

### `'Advanced'` —

`Advanced` is a structure with the following fields:

• `ErrorThreshold` — Specifies when to adjust the weight of large errors from quadratic to linear.

Errors larger than `ErrorThreshold` times the estimated standard deviation have a linear weight in the criteria. The standard deviation is estimated robustly as the median of the absolute deviations from the median and divided by `0.7`. For more information on robust norm choices, see section 15.2 of [2].

`ErrorThreshold = 0` disables robustification and leads to a purely quadratic criterion. When estimating with frequency-domain data, the software sets `ErrorThreshold` to zero. For time-domain data that contains outliers, try setting `ErrorThreshold` to `1.6`.

Default: 0

• `MaxSize` — Specifies the maximum number of elements in a segment when input-output data is split into segments.

`MaxSize` must be a positive integer.

Default: 250000

• `StabilityThreshold` — Specifies thresholds for stability tests.

`StabilityThreshold` is a structure with the following fields:

• `s` — Specifies the location of the right-most pole to test the stability of continuous-time models. A model is considered stable when its right-most pole is to the left of `s`.

Default: 0

• `z` — Specifies the maximum distance of all poles from the origin to test stability of discrete-time models. A model is considered stable if all poles are within the distance `z` from the origin.

Default: `1+sqrt(eps)`

• `AutoInitThreshold` — Specifies when to automatically estimate the initial condition.

The initial condition is estimated when

$\frac{‖{y}_{p,z}-{y}_{meas}‖}{‖{y}_{p,e}-{y}_{meas}‖}>\text{AutoInitThreshold}$

• ymeas is the measured output.

• yp,z is the predicted output of a model estimated using zero initial states.

• yp,e is the predicted output of a model estimated using estimated initial states.

Applicable when `InitialCondition` is `'auto'`.

Default: `1.05`

## Output Arguments

 `opt` Option set containing the specified options for `polyest`.

## Examples

collapse all

### Create Default Options Set for Polynomial Estimation

`opt = polyestOptions;`

### Specify Options for Polynomial Estimation

Create an options set for `polyest` using the `'stability'` for `Focus`, and set the `Display` to `'on'`.

`opt = polyestOptions('Focus','stability','Display','on');`

Alternatively, use dot notation to set the values of `opt`.

```opt = polyestOptions; opt.Focus = 'stability'; opt.Display = 'on';```

## References

[1] Wills, Adrian, B. Ninness, and S. Gibson. "On Gradient-Based Search for Multivariable System Estimates". Proceedings of the 16th IFAC World Congress, Prague, Czech Republic, July 3–8, 2005. Oxford, UK: Elsevier Ltd., 2005.

[2] Ljung, L. System Identification: Theory for the User. Upper Saddle River, NJ: Prentice-Hall PTR, 1999.