Simulink^{®}
Design Optimization™ software lets you estimate scalar, vector, and matrix parameters. You
can take an iterative approach to estimating model parameters. For example, if you
have a large number of parameters to estimate, start by estimating those that most
influence the output. After you estimate a subset of parameters and validate the
estimated parameters, you can select the remaining parameters for estimation.

You can also first use sensitivity
analysis to identify the parameters that most influence the estimation,
and then specify these parameters for estimation. To open the **Sensitivity Analyzer**, in the **Parameter Estimation**
tab, click **Sensitivity Analysis**. In the
**Sensitivity Analyzer**, you can identify the model parameters that most
influence the estimation problem and compute initial values for the estimation
parameters.

The software can only estimate variables that are in use by the model. Create
variables for estimation in the MATLAB^{®} or model workspace, and specify your Simulink model or block parameters using these variables.

In this figure, the **Numerator coefficients** parameter of a
Transfer Fcn block is specified as a numerical value.

To estimate the **Numerator coefficients** parameter, specify it
as variable `gain1`

:

Create the variable

`gain1`

in one of the following ways:Add the variables to the model workspace, and specify initial values.

Write initialization code in the

**PreloadFcn**callback of the model. For more information, see Model Callbacks.gain1 = 100

Specify the block parameter as variable

`gain1`

in the Transfer Fcn block dialog box.

You can now select `gain1`

for estimation. See, Specify Parameters for Estimation.

You can specify the parameters for estimation experiments using the
**Estimated Parameters** editor. In the **Parameter
Estimator**, on the **Parameter Estimation** tab, click
**Select Parameters**.

To select parameters for all experiments, click **Select
Parameters** in the **Parameters Tuned for all
Experiments** panel. This opens the **Select model
variables** dialog. Here you can select the parameters you want to
estimate by clicking the check box next to it or specifying an expression. For more
information see Select Parameters Using Select Model Variables Dialog Box.

The editor looks like

For example, in the `engine_idle_speed`

model, select
`freq1`

, `freq2`

, `freq3`

,
`gain1`

, `gain2`

, `gain3`

and
`mean_speed`

for estimation. You do not need to estimate the
parameters all at once. You can first select all the parameters you are interested
in, and then later select a subset to estimate. By default, all the parameters are
selected for estimation. To deselect the ones you do not want to estimate, clear the
**Estimate** check box for a parameter. For this example, only
estimate `gain1`

, `gain2`

,
`gain3`

and `mean_speed`

. Set their initial
values 10, 100, 50, and 500, respectively, and then click **OK**.
The **Edit: Estimated Parameters** dialog box looks like

To learn how to specify initial values and upper and lower bounds of the parameters, see Specifying Initial Guesses and Upper/Lower Bounds.

To select the parameters to estimate in a specific experiment, first, select
the experiment for estimation as described in Estimate Parameters and States. Then, you can use the
**Edit:Estimated Parameters** dialog to select parameters
to estimate for that experiment. Select the experiment name from the
**Experiment:** combo box in the **Parameters
and Initial States Tuned per Experiment** panel. Then click
**Edit experiment** to launch the experiment editor for
the experiment you select.

Alternatively, you can right click the experiment name in the
**Experiments** list and select
**Edit...**. In the experiment editor, click the
**Select parameters** button in the
**Parameters** panel. In the Select model variables dialog
box, you can select the parameters you want to estimate in this experiment by
checking the box next to it or specifying an expression. For more information
see Select Parameters Using Select Model Variables Dialog Box.

Use this dialog box to specify parameters to estimate. The table lists the variables that the model uses to set block parameter values. The variables can reside in the model workspace, the base workspace, or a data dictionary.

Select variables by
clicking the check box next to each variable. If your model contains
many variables, filter the list by typing in the **Filter
by variable name** field. The **Used By** column
lists all blocks in the model that use the variable. When a variable
is used in more than one block, all blocks are listed. To highlight
blocks in the model that use the variable, click the block name.

The variables that you select must have a numeric value
that uses the data type `double`

. If the value of
a variable is not a `double`

number, use these techniques:

To select a single element or a subset of a matrix or array variable, click

**Specify expression indexing if necessary**.Enter an expression such as

`myArray(2)`

, which selects the second element of an array variable`myArray`

.After you type the expression, press the

**Enter**key to add the variable to the list of model variables.To use a variable of a numeric data type other than

`double`

, convert the variable to a`Simulink.Parameter`

object, which separates a parameter value from its data type. Set the`Value`

property to a default`double`

number, and use the`DataType`

property to control the data type.To use the value of a

`Simulink.Parameter`

object, specify the`Value`

property. Enter the expression`myParamObj.Value`

.To use a numeric field of a structure, enter

`myStruct.PID.P1`

. If you store the structure in a`Simulink.Parameter`

object, enter`myStruct.Value.PID.P1`

.To use one cell of a cell array, enter

`myCells{3}`

.

You cannot use mathematical expressions such as *a* +
*b*. Sometimes, models have parameters that are not
explicitly defined in the model itself. For example, a gain `k`

could be defined in the MATLAB workspace as `k = a + b`

, where
`a`

and `b`

are not defined in the model
but `k`

is used. To add these independent parameters, see Add Model Parameters as Variables for Estimation.

After you select parameters, you can specify

**Initial guess**— The value the estimation uses to start the process.**Minimum**— The smallest allowable parameter value. The default is`-Inf`

.**Maximum**— The largest allowable parameter value. The default is`+Inf`

.You can enter the initial value in the dialog box below the parameter name. You can specify the minimum and maximum value fields by clicking the arrow . The default minimum and maximum values are

`-Inf`

and`+Inf`

, respectively, but you can select any range you want.If you believe a parameter lies within a finite range, it is best not to use the default minimum and maximum values. Often, there are computational advantages in specifying finite bounds. It can be very important to specify lower and upper bounds. For example, if a parameter specifies the weight of a part, be sure to specify

`0`

as the absolute lower bound if better information is unavailable.**Note**When you specify the minimum and maximum values for the parameters, it does not affect your settings in the

**Parameters**list under**Data Browser**pane. You make these choices for each experiment.**Scale**— The scale value to use for normalization. The parameters are scaled, or normalized, by dividing their current value by the scale value.**Scale**is useful, in situations, for example, when parameters have different orders of magnitude.The default scale value is the next power of 2 greater than the current value of the parameter. For example, if the current parameter value is

`15`

,**Scale**is`16`

( =$${2}^{4}$$). You can edit this field to provide an alternate scaling factor.