Block parameters configure a Simulink® model in several ways. For example, you can use block parameters to specify various coefficients or controller sample times. You can also use a discrete parameter, like the control input to a Multiport Switch block, to control the data path within a model. Varying the value of a parameter helps you understand its impact on the model behavior.
When using any of the Simulink
Control Design™ linearization tools (or tuning with slTuner
or
Control System Tuner) you can specify a set of block parameter values at which to
linearize the model. The full set of values is called a parameter
grid or parameter samples. The tools
batch-linearize the model, computing a linearization for each value in the parameter
grid. You can vary multiple parameters, thus extending the parameter grid dimension.
When using the command-line linearization tools, the linearize
command or the slLinearizer
or slTuner
interfaces, you specify the parameter samples using a structure with fields
Name
and Value
. In the Model
Linearizer or Control System Tuner, you use the graphical interface
to specify parameter samples.
You can vary any model parameter whose value is given by a variable in the model workspace, the MATLAB® workspace, or a data dictionary. In cases where the varying parameters are all tunable, the linearization tools require only one model compilation to compute transfer functions for varying parameter values. This efficiency is especially advantageous for models that are expensive to compile repeatedly.
For more information, see Batch Linearization Efficiency When You Vary Parameter Values.
To vary the value of a single parameter for batch linearization with
linearize
, slLinearizer
, or
slTuner
, specify the parameter grid as a structure having two
fields. The Name
field contains the name of the workspace variable
that specifies the parameter. The Value
field contains a vector of
values for that parameter to take during linearization.
For example, the Watertank
model has three
parameters defined as MATLAB workspace variables, a
, b
,
and A
. The following commands specify a parameter
grid for the single parameter for A
.
param.Name = 'A';
param.Value = Avals;
Here, Avals
is an array specifying the sample
values for A
.
The following table lists some common ways of specifying parameter samples.
Parameter Sample-Space Type | How to Specify the Parameter Samples |
---|---|
Linearly varying | param.Value = linspace(A_min,A_max,num_samples) |
Logarithmically varying | param.Value = logspace(A_min,A_max,num_samples) |
Random | param.Value = rand(1,num_samples) |
Custom | param.Value = custom_vector |
If the variable used by the model is not a scalar variable,
specify the parameter name as an expression that resolves to a numeric
scalar value. For example, suppose that Kpid
is
a vector of PID gains. The first entry in that vector, Kpid
,
is used as a gain value in a block in your model. Use the following
commands to vary that gain using the values given in a vector Kpvals
:
param.Name = 'Kpid(1)';
param.Value = Kpvals;
After you create the structure param
:
Pass it to linearize
as the
param
input argument.
Pass it to slLinearizer
as the
param
input argument, when creating an
slLinearizer
interface.
Set the Parameters
property of an existing
slLinearizer
interface to param
.
To specify variations of a single parameter for batch linearization in Model
Linearizer, on the Linear Analysis tab, in the
Parameter Variations drop-down list, click Select
parameters to vary
. (In Control System Tuner, the
Parameter Variations drop-down list is on the Control
System tab.)
Click
Manage Parameters. In the Select model variables dialog box, check
the parameter to vary. The table lists all variables in the MATLAB workspace and the model workspace that are used in the model, whether
tunable or not.
Note
If the parameter is not a scalar variable, click Specify expression
indexing if necessary and enter an expression that resolves to a
numeric scalar value. For example, if A
is a vector, enter
A(3)
to specify the third entry in A
. If
A
is a structure and the scalar parameter you want to vary is
the Value
field of that structure, enter
A.Value
. The indexed variable appears in the variable
list.
Click
OK. The selected variable appears in the Parameter
Variations table. Use the table to specify parameter values manually, or
generate values automatically.
To specify the values manually, add rows to the table by clicking
Insert Row and selecting either
Insert Row
Above
or Insert Row Below
. Then, edit the
values in the table as needed.
When you return to the Linear Analysis tab and linearize the model, Model Linearizer linearizes at all parameter values listed in the Parameter Variations table.
Note
In Control System Tuner, when you are finished specifying your parameter
variations, you must apply the changes before continuing with tuning. To do so, in
the Parameter Variations tab, click
Apply. Control System Tuner applies the specified parameter
variations, relinearizes your model, and updates all existing plots.
To generate values automatically, click
Generate Values. In the Generate Parameter Values dialog box, in
the Values column, enter an expression for the parameter values
you want for the variable. For example, enter an expression such as
linspace(A_min,A_max,num_samples)
, or
[10:2:30]
.
Click
Overwrite to replace the values in the Parameter
Variations table with the generated values.
When you return to the Linear Analysis tab and linearize the model, Model Linearizer computes a linearization for each of these parameter values.
Note
In Control System Tuner, when you are finished specifying your parameter
variations, you must apply the changes before continuing with tuning. To do so, in
the Parameter Variations tab, click
Apply. Control System Tuner applies the specified parameter
variations, relinearizes your model, and updates all existing plots.
When you vary more than one parameter at a time, you generate parameter grids of higher dimension. For example, varying two parameters yields a parameter matrix, and varying three parameters yields a 3-D parameter grid. Consider the following parameter grid:
Here, you vary the values of three parameters, a,
b, and c. The samples form a 3-by-4-by-5 grid.
When batch linearizing your model, the ss
model array,
sys
, is the batch result. Similarly, when batch trimming your
model, you get an array of operating point objects.
To vary the value of multiple parameters for batch linearization with
linearize
, slLinearizer
, or
slTuner
, specify parameter samples as a structure array. The
structure has an entry for each parameter whose value you vary. The structure for each
parameter is the same as described in Vary Single Parameter at the Command Line. You can specify the Value
field for a
parameter to be an array of any dimension. However, the size of the
Value
field must match for all parameters. Corresponding array
entries for all the parameters, also referred to as a parameter grid
point, must map to a desired parameter combination. When the software
linearizes the model, it computes a linearization — an ss
model —
for each grid point. The software populates the SamplingGrid
property
of each linearized model with information about the parameter grid point that the model
corresponds to.
Suppose that your model has two parameters whose values you want to vary, a and b:
You want to linearize the model for every combination of a and b, also referred to as a full grid:
Create a rectangular parameter grid using ndgrid
.
a1 = 1; a2 = 2; a = [a1 a2]; b1 = 3; b2 = 4; b = [b1 b2]; [A,B] = ndgrid(a,b)
>> A A = 1 1 2 2 >> B B = 3 4 3 4
Create the structure array, params
, that
specifies the parameter grid.
params(1).Name = 'a'; params(1).Value = A; params(2).Name = 'b'; params(2).Value = B;
In general, to specify a full grid for N parameters,
use ndgrid
to obtain N grid
arrays.
[P1,...,PN] = ndgrid(p1,...,pN);
Here, p1
,...,pN
are
the parameter sample vectors.
Create a 1 x N structure array.
params(1).Name = 'p1'; params(1).Value = P1; ... params(N).Name = 'pN'; params(N).Value = PN;
If your model is complex or you vary the value of many parameters, linearizing the model for the full grid can become expensive. In this case, you can specify a subset of the full grid using a table-like approach. Using the example in Specify Full Grid, suppose you want to linearize the model for the following combinations of a and b:
Create the structure array, params
, that
specifies this parameter grid.
A = [a1 a1]; params(1).Name = 'a'; params(1).Value = A; B = [b1 b2]; params(2).Name = 'b'; params(2).Value = B;
To vary the value of multiple parameters for batch linearization in Model Linearizer or Control System Tuner, open the Select model variables dialog box, as described in Vary Single Parameter in Graphical Tools. In the dialog box, check all variables you want to vary.
Note
If a parameter you want to vary is not a scalar variable, click Specify
expression indexing if necessary and enter an expression that resolves
to a scalar value. For example, if A
is a vector, enter
A(3)
to specify the third entry in A
. If
A
is a structure and the scalar parameter you want to vary is
the Value
field of that structure, enter
A.Value
. The indexed variable appears in the variable
list.
Click
OK. The selected variables appear in the Parameter
Variations table. Each column in the table corresponds to one selected
variable. Each row in the table represents one full set of parameter values at which to
linearize the model. When you linearize, Model Linearizer computes as many
linear models as there are rows in the table. Use the table to specify combinations of
parameter values manually, or generate value combinations automatically.
To specify the values manually, add rows to the table by clicking
Insert Row and selecting either
Insert Row
Above
or Insert Row Below
. Then, edit the
values in the table as needed. For example, the following table specifies
linearization at four parameter-value pairs: (Ki2,Kp2)
= (3.5,1),
(3.5,2), (5,1), and (5,2).
When you return to the Linear Analysis tab and linearize the model, Model Linearizer computes a linearization for each of these parameter-value pairs.
Note
In Control System Tuner, when you are finished specifying your parameter
variations, you must apply the changes before continuing with tuning. To do so, in
the Parameter Variations tab, click
Apply. Control System Tuner applies the specified parameter
variations, relinearizes your model, and updates all existing plots.
To generate values automatically, click
Generate Values. In the Generate Parameter Values dialog box, in
the Values column, enter an expression for the parameter values you want for each
variable, such as
linspace(A_min,A_max,num_samples)
, or
[10:2:30]
. For example, the following entry generates
parameter-value pairs for all possible combinations of Kp1 =
[0.1,0.15,0.2,0.25,0.3]
and Kp2 =
[0.03,0.04,0.05]
.
Click
Overwrite to replace the values in the Parameter
Variations table with the generated values.
When you return to the Linear Analysis tab and linearize the model, Model Linearizer computes a linearization for each of these parameter-value pairs.
Note
In Control System Tuner, when you are finished specifying your parameter
variations, you must apply the changes before continuing with tuning. To do so, in
the Parameter Variations tab, click
Apply. Control System Tuner applies the specified parameter
variations, relinearizes your model, and updates all existing plots.
linearize
| linspace
| logspace
| ndgrid
| rand
| slLinearizer
| slTuner