主要内容

本页采用了机器翻译。点击此处可查看英文原文。

使用 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);

另请参阅

主题