Main Content

setparam

Change value of tunable parameter in real-time application

Since R2020b

Description

example

setparam(target_object, block_path, parameter_name, parameter_value,'Force',true) sets the value of a tunable block parameter to a new value. Specify the block parameter by the block name and the parameter name.

example

setparam(target_object, '', parameter_name, parameter_value,'Force',true) sets the value of the tunable global parameter to a new value. Specify the global parameter by the MATLAB® variable name.

Examples

collapse all

Set the value of the block parameter 'Amplitude' of the block 'Signal Generator' to 5.

tg = slrealtime('TargetPC1');
model = 'slrt_ex_osc';
xfername = [model,'/Signal Generator'];
slbuild(model);
load(tg,model);
setparam(tg,xfername,'Amplitude',5)

Sweep the value of the block parameter 'Amplitude' of the block 'Signal Generator' by steps of 2.

tg = slrealtime('TargetPC1');
model = 'slrt_ex_osc';
xfername = [model,'/Signal Generator'];
slbuild(model);
load(tg,model);
for i = 1 : 3
    setparam(tg,xfername,'Amplitude',(i*2))
end

Set the value of the MATLAB variable 'Freq' to 30.

tg = slrealtime('TargetPC1');
model = 'slrt_ex_osc';
openExample(model);
Freq = Simulink.Parameter;
Freq.StorageClass = 'ExportedGlobal';
Freq.Value = 10;
xfername = [model,'/Signal Generator'];
set_param(xfername,'Frequency','Freq');
slbuild(model);
load(tg,model);
setparam(tg,'','Freq',30)

Set the value of the MATLAB variable 'oscp.G2' to 10000000.

tg = slrealtime('TargetPC1');
model = 'slrt_ex_osc_struct';
openExample(model);
load('slrt_ex_osc_struct.mat');
slbuild(model);
load(tg,model);
setparam(tg,'','spkp.g2_gain',10000000)

The getparam and setparam functions support dot notation syntax to access parameter values in real-time applications. These are examples of more advanced syntax.

% If a parameter is a struct, a single element of any 
% array can be specified at any arbitrary depth in the struct.
tg.setparam('', 'p.a.b(2).c', val) 
val = tg.getparam('', 'p.a.b(2).c') 

% If a parameter is an array of structs, one element of 
% the struct array can be specified as follows:
tg.setparam('', 'p(2,2).x.y.z', val) 
val = tg.getparam('', 'p(2,2).x.y.z') 

% If a parameter is N dimensions, a single element of 
% the parameter can be accessed by specifying each dimension.
tg.setparam('top/constant', 'Value(3,4)', val) 
val = tg.getparam('top/constant', 'Value(3,4)') 

% If a parameter is Mx1 or 1xN (row or column vector), 
% the following syntax specifying a single index 
% is allowed: 
tg.setparam('top/constant1', 'Value(4)', val)

Input Arguments

collapse all

Provides access to methods that manipulate the target computer properties.

Example: tg

The block_path values can be:

  • Empty character vector ('') or empty string scalar ("") for base or model workspace variables

  • Character vector or string scalar string for block path to parameters in the top model

  • Cell array of character vectors or string scalars for model block arguments

Example: '', 'Gain1', {'top/model','sub/model'}

The parameter can designate either a block parameter or a global parameter that provides the value for a block parameter. The block parameter or MATLAB variable must be observable to be accessible through the parameter name.

Note

Simulink® Real-Time™ does not support parameters of multiword data types.

Example: 'Gain', 'oscp.G1', 'oscp', 'G2'

New value with data type as required by parameter.

Example: 1

The optional 'Force', true name-value pair argument forces the parameter value set operation even if the value is not in the range of [min max] for the parameter.

Example: 'Force', true

Data Types: logical

Version History

Introduced in R2020b

expand all