使用 MATLAB 语言调节参数结构
为了减少需要维护的工作区变量数量并避免名称冲突,可以将密切相关的参数分组到结构体中。请参阅在结构体中组织相关的模块参数定义。
例如,在此示例中,初始模型 slrt_ex_osc 有四个参数,用于确定输出波形的形状。

创建参数结构体
该过程将一些密切相关的参数分组到结构中。
1.打开模型 slrt_ex_osc,并将一份副本保存到工作文件夹中。
2.要创建一个参数结构,请在命令行窗口中输入:
kp = struct(... 'sg_freq', 20, ... 'g2_gain',1000^2, ... 'g1_gain', 2*0.2*1000, ... 'g_gain',1000^2)
kp =
struct with fields:
sg_freq: 20
g2_gain: 1000000
g1_gain: 400
g_gain: 1000000
3.要使参数结构在目标计算机上可调整:
spkp = Simulink.Parameter(kp);
spkp.StorageClass = 'ExportedGlobal';
spkp.Value
ans =
struct with fields:
sg_freq: 20
g2_gain: 1000000
g1_gain: 400
g_gain: 1000000
保存和加载参数结构
要保存参数结构 spkp 以备后用,请输入:
save 'slrt_ex_osc_struct.mat', 'spkp';
若要在打开模型时加载参数结构,请在 PreLoadFcn 回调函数中添加一个加载命令。若要在关闭模型时从工作区中删除参数结构,请在 CloseFcn 回调函数中添加一个 clear 命令。有关详细信息,请参阅模型回调。
用参数结构体字段替换模块参数
1.在 Signal Generator 模块中,将参数 Frequency 的值替换为 spkp.sg_freq。
2.在 Gain 模块中,将参数 Gain 的值替换为 spkp.g_gain。
3.在 Gain1 模块中,将参数 Gain 的值替换为 spkp.g1_gain。
4.在 Gain2 模块中,将参数 Gain 的值替换为 spkp.g2_gain。
调节参数结构中的参数
如果您尚未完成创建参数结构、保存和加载参数结构以及用参数结构体字段替换模块参数中的步骤,可以先使用已完成的模型。
1.为默认目标计算机创建目标对象,并连接到目标计算机。在 MATLAB 命令行窗口中,输入:
tg = slrealtime; connect(tg); % *2.* To open the model, in the MATLAB Command Window, type: model = 'slrt_ex_osc_struct'; open_system(model); load('slrt_ex_osc_struct.mat'); modelSTF = getSTFName(tg); set_param(model,"SystemTargetFile",modelSTF);

3.标记用于将信号记录到 Scope 模块中。

4.构建模型并将其下载到目标计算机上。
evalc('slbuild(model)');
load(tg,model);
5.将停止时间设置为 inf。
setStopTime(tg,inf);
6.将 Gain1 模块的 Gain 值从 200 扫至 800。
start(tg); for g = 200 : 200 : 800 setparam(tg, '', 'spkp.g1_gain', g); pause(1); end stop(tg);
7.在“仿真数据检查器”中查看发送到 Scope 模块的信号。
Simulink.sdi.view;
关闭所有打开的文件
bdclose(model);