Note: This page has been translated by MathWorks. Click here to see

To view all translated materials including this page, select Country from the country navigator on the bottom of this page.

To view all translated materials including this page, select Country from the country navigator on the bottom of this page.

**MathWorks Machine Translation**

The automated translation of this page is provided by a general purpose third party translator tool.

MathWorks does not warrant, and disclaims all liability for, the accuracy, suitability, or fitness for purpose of the translation.

Estimate process model using time or frequency data

`sys = procest(data,type)`

`sys = procest(data,type,'InputDelay',InputDelay)`

`sys = procest(data,init_sys)`

`sys = procest(___,opt)`

`[sys,offset] = procest(___)`

`[`

returns
the estimated value of the offset in input signal. Input offset is
automatically estimated when the model contains an integrator, or
when you set the `sys`

,`offset`

] = procest(___)`InputOffset`

estimation option
to `'estimate'`

using `procestOptions`

.
Use `offset`

with any of the previous syntaxes.

`data`

— Estimation data`iddata`

| `idfrd`

| `frd`

Estimation data, specified as an `iddata`

object
containing the input and output signal values, for time-domain estimation.
For frequency-domain estimation, `data`

can be
one of the following:

`data`

must have at least one input and one
output.

Time-series models, which are models that contain no measured
inputs, cannot be estimated using `procest`

. Use `ar`

, `arx`

,
or `armax`

for time-series models instead.

`type`

— Process model structurecharacter vector | string | cell array of character vectors | string array

Process model structure, specified for SISO models as a character
vector or string representing an acronym for the model structure,
such as `'P1D'`

or `'P2DZ'`

. The
acronym is made up of:

`P`

— All`'Type'`

acronyms start with this letter.`0`

,`1`

,`2`

, or`3`

— Number of time constants (poles) to be modeled. Possible integrations (poles in the origin) are not included in this number.`I`

— Integration is enforced (self-regulating process).`D`

— Time delay (dead time).`Z`

— Extra numerator term, a zero.`U`

— Underdamped modes (complex-valued poles) permitted. If`U`

is not included in`type`

, all poles must be real. The number of poles must be 2 or 3.

For MIMO models, use an `Ny`

-by-`Nu`

cell
array of character vectors or string array, with one entry for each
input-output pair. Here `Ny`

is the number of inputs
and `Nu`

is the number of outputs.

For information regarding how `type`

affects
the structure of a process model, see `idproc`

.

`InputDelay`

— Input delays`0`

for all input channels (default) | numeric vectorInput delays, specified as a numeric vector specifying a time
delay for each input channel. Specify input delays in the time unit
stored in the `TimeUnit`

property.

For a system with `Nu`

inputs, set `InputDelay`

to
an `Nu`

-by-1 vector. Each entry of this vector is
a numerical value that represents the input delay for the corresponding
input channel. You can also set `InputDelay`

to a
scalar value to apply the same delay to all channels.

`init_sys`

— System for configuring initial parametrization`idproc`

objectSystem for configuring initial parametrization of `sys`

,
specified as an `idproc`

object. You obtain `init_sys`

by
either performing an estimation using measured data or by direct construction
using `idproc`

. The software uses
the parameters and constraints defined in `init_sys`

as
the initial guess for estimating `sys`

.

Use the `Structure`

property of `init_sys`

to
configure initial guesses and constraints for *Kp*, *T _{p1}*,

To specify an initial guess for the

*T*parameter of_{p1}`init_sys`

, set`init_sys.Structure.Tp1.Value`

as the initial guess.To specify constraints for the

*T*parameter of_{p2}`init_sys`

:Set

`init_sys.Structure.Tp2.Minimum`

to the minimum*T*value._{p2}Set

`init_sys.Structure.Tp2.Maximum`

to the maximum*T*value._{p2}Set

`init_sys.Structure.Tp2.Free`

to indicate if*T*is a free parameter for estimation._{p2}

If `opt`

is not specified, and `init_sys`

was
obtained by estimation, then the estimation options from `init_sys.Report.OptionsUsed`

are
used.

`opt`

— Estimation options`procestOptions`

option setEstimation options, specified as an `procestOptions`

option
set. The estimation options include:

Estimation objective

Handling on initial conditions and disturbance component

Numerical search method to be used in estimation

`sys`

— Identified process model`idproc`

modelIdentified process model, returned as an `idproc`

model
of a structure defined by `type`

.

Information about the estimation results and options used is
stored in the model's `Report`

property. `Report`

has
the following fields:

Report Field | Description | ||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|

`Status` | Summary of the model status, which indicates whether the model was created by construction or obtained by estimation. | ||||||||||||||||||

`Method` | Estimation command used. | ||||||||||||||||||

`InitialCondition` | Handling of initial conditions during model estimation, returned as one of the following values: `'zero'` — The initial conditions were set to zero.`'estimate'` — The initial conditions were treated as independent estimation parameters.`'backcast'` — The initial conditions were estimated using the best least squares fit.
This field is especially useful to view
how the initial conditions were handled when the | ||||||||||||||||||

`Fit` | Quantitative assessment of the estimation, returned as a structure. See Loss Function and Model Quality Metrics for more information on these quality metrics. The structure has the following fields:
| ||||||||||||||||||

`Parameters` | Estimated values of model parameters. | ||||||||||||||||||

`OptionsUsed` | Option set used for estimation. If no custom options
were configured, this is a set of default options. See | ||||||||||||||||||

`RandState` | State of the random number stream at the start of estimation.
Empty, | ||||||||||||||||||

`DataUsed` | Attributes of the data used for estimation. Structure with the following fields:
| ||||||||||||||||||

`Termination` | Termination conditions for the iterative search used for prediction error minimization. Structure with the following fields:
For
estimation methods that do not require numerical search optimization,
the |

For more information on using `Report`

, see Estimation Report.

`offset`

— Estimated value of input offsetvector

Estimated value of input offset, returned as a vector. When `data`

has
multiple experiments, `offset`

is a matrix where
each column corresponds to an experiment.

Obtain the measured input-output data.

load iddemo_heatexchanger_data; data = iddata(pt,ct,Ts); data.InputName = '\Delta CTemp'; data.InputUnit = 'C'; data.OutputName = '\Delta PTemp'; data.OutputUnit = 'C'; data.TimeUnit = 'minutes';

Estimate a first-order plus dead time process model.

```
type = 'P1D';
sysP1D = procest(data,type);
```

Compare the model with the data.

compare(data,sysP1D)

Plot the model residuals.

figure resid(data,sysP1D);

The figure shows that the residuals are correlated. To account for that, add a first order ARMA disturbance component to the process model.

opt = procestOptions('DisturbanceModel','ARMA1'); sysP1D_noise = procest(data,'p1d',opt);

Compare the models.

compare(data,sysP1D,sysP1D_noise)

Plot the model residuals.

figure resid(data,sysP1D_noise);

The residues of `sysP1D_noise`

are uncorrelated.

Use regularization to estimate parameters of an over-parameterized process model.

Assume that gain is known with a higher degree of confidence than other model parameters.

Load data.

load iddata1 z1;

Estimate an unregularized process model.

m = idproc('P3UZ','K',7.5,'Tw',0.25,'Zeta',0.3,'Tp3',20,'Tz',0.02); m1 = procest(z1,m);

Estimate a regularized process model.

```
opt = procestOptions;
opt.Regularization.Nominal = 'model';
opt.Regularization.R = [100;1;1;1;1];
opt.Regularization.Lambda = 0.1;
m2 = procest(z1,m,opt);
```

Compare the model outputs with data.

compare(z1,m1,m2);

Regularization helps steer the estimation process towards the correct parameter values.

Estimate a process model after specifying initial guesses for parameter values and bounding them.

Obtain input/output data.

`data = idfrd(idtf([10 2],[1 1.3 1.2],'iod',0.45),logspace(-2,2,256));`

Specify the parameters of the estimation initialization model.

```
type = 'P2UZD';
init_sys = idproc(type);
init_sys.Structure.Kp.Value = 1;
init_sys.Structure.Tw.Value = 2;
init_sys.Structure.Zeta.Value = 0.1;
init_sys.Structure.Td.Value = 0;
init_sys.Structure.Tz.Value = 1;
init_sys.Structure.Kp.Minimum = 0.1;
init_sys.Structure.Kp.Maximum = 10;
init_sys.Structure.Td.Maximum = 1;
init_sys.Structure.Tz.Maximum = 10;
```

Specify the estimation options.

opt = procestOptions('Display','full','InitialCondition','Zero'); opt.SearchMethod = 'lm'; opt.SearchOptions.MaxIterations = 100;

Estimate the process model.

sys = procest(data,init_sys,opt);

Since the `'Display'`

option is specified as `'full'`

, the estimation progress is displayed in a separate **Plant Identification Progress** window.

Compare the data to the estimated model.

compare(data,sys,init_sys);

Obtain input/output data.

load iddata1 z1 load iddata2 z2 data = [z1 z2(1:300)];

`data`

is a data set with 2 inputs and 2 outputs. The first input affects only the first output. Similarly, the second input affects only the second output.

In the estimated process model, the cross terms, modeling the effect of the first input on the second output and vice versa, should be negligible. If higher orders are assigned to those dynamics, their estimations show a high level of uncertainty.

Estimate the process model.

```
type = 'P2UZ';
sys = procest(data,type);
```

The `type`

variable denotes a model with complex-conjugate pair of poles, a zero, and a delay.

To evaluate the uncertainties, plot the frequency response.

w = linspace(0,20*pi,100); h = bodeplot(sys,w); showConfidence(h);

Accelerate code by automatically running computation in parallel using Parallel Computing Toolbox™.

Parallel computing support is available for estimation using the
`lsqnonlin`

search method (requires Optimization
Toolbox™). To enable parallel computing, use `procestOptions`

, set
`SearchMethod`

to `'lsqnonlin'`

, and set
`SearchOptions.Advanced.UseParallel`

to
`true`

.

For example:

```
opt = procestOptions;
opt.SearchMethod = 'lsqnonlin';
opt.SearchOptions.Advanced.UseParallel = true;
```

You clicked a link that corresponds to this MATLAB command:

Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.

Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .

Select web siteYou can also select a web site from the following list:

Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.

- América Latina (Español)
- Canada (English)
- United States (English)

- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)

- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)