Estimate nonlinear grey-box model parameters

Load data.

load(fullfile(matlabroot,'toolbox','ident','iddemos','data','twotankdata')); z = iddata(y,u,0.2,'Name','Two tanks');

The data contains 3000 input-output data samples of a two tank system. The input is the voltage applied to a pump, and the output is the liquid level of the lower tank.

Specify file describing the model structure for a two-tank system. The file specifies the state derivatives and model outputs as a function of time, states, inputs, and model parameters.

`FileName = 'twotanks_c';`

Specify model orders [ny nu nx].

Order = [1 1 2];

Specify initial parameters (Np = 6).

```
Parameters = {0.5;0.0035;0.019; ...
9.81;0.25;0.016};
```

Specify initial initial states.

InitialStates = [0;0.1];

Specify as continuous system.

Ts = 0;

Create `idnlgrey`

model object.

nlgr = idnlgrey(FileName,Order,Parameters,InitialStates,Ts, ... 'Name','Two tanks');

Set some parameters as constant.

nlgr.Parameters(1).Fixed = true; nlgr.Parameters(4).Fixed = true; nlgr.Parameters(5).Fixed = true;

Estimate the model parameters.

nlgr = nlgreyest(z,nlgr);

Create estimation option set for `nlgreyest`

to view estimation progress, and to set the maximum iteration steps to 50.

```
opt = nlgreyestOptions;
opt.Display = 'on';
opt.SearchOptions.MaxIterations = 50;
```

Load data.

load(fullfile(matlabroot,'toolbox','ident','iddemos','data','dcmotordata')); z = iddata(y,u,0.1,'Name','DC-motor');

The data is from a linear DC motor with one input (voltage), and two outputs (angular position and angular velocity). The structure of the model is specified by `dcmotor_m.m`

file.

Create a nonlinear grey-box model.

file_name = 'dcmotor_m'; Order = [2 1 2]; Parameters = [1;0.28]; InitialStates = [0;0]; init_sys = idnlgrey(file_name,Order,Parameters,InitialStates,0, ... 'Name','DC-motor');

Estimate the model parameters using the estimation options.

sys = nlgreyest(z,init_sys,opt);

`data`

— Time domain data`iddata`

objectTime-domain estimation data, specified as an `iddata`

object. `data`

has
the same input and output dimensions as `init_sys`

.

If you specify the `InterSample`

property of `data`

as `'bl'`

(band-limited)
and the model is continuous-time, the software treats data as first-order-hold
(foh) interpolated for estimation.

`options`

— Estimation options`nlgreyestOptions`

option setEstimation options for nonlinear grey-box model identification,
specified as an `nlgreyestOptions`

option
set.

`sys`

— Estimated nonlinear grey-box model`idnlgrey`

objectNonlinear grey-box model with the same structure as `init_sys`

,
returned as an `idnlgrey`

object. The parameters
of `sys`

are estimated such that the response of `sys`

matches
the output signal in the estimation data.

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

property of the model. `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` | Name of the simulation solver and the search method used during estimation. | ||||||||||||||||||

`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 the model parameters. Structure with the following fields:
| ||||||||||||||||||

`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, see Estimation Report.

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 `nlgreyestOptions`

, set `SearchMethod`

to
`'lsqnonlin'`

, and set `SearchOptions.Advanced.UseParallel`

to `true`

.

For example:

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

`aic`

| `fpe`

| `goodnessOfFit`

| `idnlgrey`

| `nlgreyestOptions`

| `pem`

A modified version of this example exists on your system. Do you want to open this version instead?

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)