目录

优化、估计和扫描模块参数值

扫描参数值并检查仿真结果

将扫描值存储在 Simulink.SimulationInput 对象中


优化、估计和扫描模块参数值

当扫描一个或多个参数时,可以在各次仿真运行之间更改参数值,并比较和分析每次运行的输出信号数据。通过参数扫描并将真实系统中的不确定性纳入考虑范围来调整控制参数,估计未知模型参数并测试控制算法的稳定性。可以扫描模块参数值或用于设置参数值的工作区变量的值。使用 Model Data Editor(在 Modeling 选项卡上,点击 Model Data Editor)上的 Parameters 选项卡、Property Inspector(在Modeling选项卡上的Design下,点击 Property Inspector)、命令提示符或脚本在各次仿真运行之间更改参数值。

如果要反复更改某模块参数的值,请考虑在工作区中创建一个变量。可以使用 Model Explorer 或编程命令来更改该变量的值,而不是在模型中定位或标识相应模块。此外,有助于参数优化、估计和扫描的一些功能和产品要求通过创建工作区变量来设置模块参数值。

扫描参数值并检查仿真结果

此示例说明如何在多次编程仿真运行之间更改模块参数值。可以使用此方法比较每次运行的输出信号数据来确定最佳参数值。示例模型sldemo_absbrake使用 Constant 模块为防抱死制动系统指定滑动设定值。用两个不同的滑动设定值(0.24 和 0.25)仿真模型,并比较每次仿真运行的输出车轮速度。要存储设定值,请在基础工作区中创建变量。此方法允许您为该值指定有意义的名称。

打开示例模型。

open_system('sldemo_absbrake');

Modeling选项卡上,点击 Model Data Editor。在 Model Data Editor 中,选择 Signals 选项卡。将 Change View 下拉列表设置为 InstrumentationLog Data 列显示信号yout(它是虚拟总线)和slp配置为记录。在仿真模型时,可以收集这些信号的值并在稍后使用 Simulation Data Inspector 检查这些信号值。

在Model Data Editor中,选择 Parameters 选项卡。将 Change view 设置为 Design。在模型中,选择标记为Desired relative slip的Constant 模块。Model Data Editor突出显示与模块的Constant value参数对应的行。使用Value列将参数值设置为relSlip。编辑该值时,在relSlip旁边,点击操作按钮(含三个纵点),然后选择 Create

在Create New Data 对话框中,将 Value 设置为0.2,然后点击 Create。值为0.2的变量会出现在基础工作区中。现在,该模型从此变量中获取相对滑动设定值。也可以在命令提示符下使用下列命令来创建变量并配置该模块:

relSlip = 0.2;
set_param('sldemo_absbrake/Desired relative slip','Value','relSlip')

在命令提示符下,创建一个数组来存储相对滑动设定值的两个实验值0.240.25

relSlip_vals = [0.24 0.25];

为每个要运行的仿真(本例中为两个)创建一个Simulink.SimulationInput对象。将这些对象存储在单个数组变量simIn中。使用每个对象的setVariable方法来分别标识两个实验值。

for i = 1:length(relSlip_vals)simIn(i) = Simulink.SimulationInput('sldemo_absbrake');simIn(i) = setVariable(simIn(i),'relSlip',relSlip_vals(i));
end

使用sim函数来仿真模型。(可选)将输出存储在名为simOutputs的变量中。

simOutputs = sim(simIn);[29-Jan-2020 22:38:06] Running simulations...
[29-Jan-2020 22:38:08] Completed 1 of 2 simulation runs
[29-Jan-2020 22:38:08] Completed 2 of 2 simulation runs

模型将记录的信号(yout 和 slp)流式传输到 Simulation Data Inspector。可以在 Simulation Data Inspector 中查看信号数据。比较最近两次仿真运行的输出数据。

runIDs = Simulink.sdi.getAllRunIDs();
runResult = Simulink.sdi.compareRuns(runIDs(end-1), runIDs(end));

通过指定结果索引 1 来绘制 Ww 信号(它是虚拟总线信号 yout 的元素)的各值之间的差异图。

signalResult = getResultByIndex(runResult,1);
plot(signalResult.Diff);

将扫描值存储在 Simulink.SimulationInput 对象中

当编写脚本来运行多次仿真时,请创建Simulink.SimulationInput对象的数组(为每个要运行的仿真创建一个对象)。使用每个对象的setVariable 和 setBlockParameter方法来标识用于对应仿真运行的参数值。使用这种方法,可以避免在仿真运行之间使用 set_param函数修改模块参数值以及使用赋值命令修改工作区变量值。有关使用Simulink.SimulationInput对象运行多次仿真的详细信息,参考sim。

扫描非标量、结构体和参数对象

如果使用非标量变量、结构体变量或Simulink.Parameter对象设置模块参数值,请使用每个Simulink.SimulationInput对象的setVariable方法。请参阅下表中的示例。

情况 示例
MATLAB® 变量 myArray,其值是一个数组。您要设置数组中的第三个元素(假设从 1 开始索引)。
setVariable(simIn,'myArray(3)',15.23)
MATLAB 变量 myStruct,它包含一个名为 field1 的字段。
setVariable(simIn,'myStruct.field1',15.23)
参数对象 myParam,其 Value 属性是一个标量。
setVariable(simIn,'myParam.Value',15.23)
参数对象 myParam,其 Value 属性是一个标量。
setVariable(simIn,'myArrayParam.Value(3)',15.23)
参数对象 myStructParam,其 Value 属性是一个结构体。该结构体包含一个名为 field1 的字段。
setVariable(simIn,'myStructParam.Value.field1',15.23)

扫描模型工作区中变量的值

如果使用模型工作区来存储变量,则当使用Simulink.SimulationInput对象的setVariable方法修改变量值时,请使用Workspace对组参数来识别包含模型:

setVariable(simIn,'myVar',15.23,'Workspace','myModel')

Simulink 环境基础知识(二十一)--优化、估计和扫描模块参数值相关推荐

  1. Simulink 环境基础知识(二十六)--信号基础知识

    目录 信号基础知识 信号线的线型 信号属性 存储信号和状态的设计属性 测试信号 信号基础知识 信号是指在所有时间点都有对应值的时变量.可以指定各种信号属性,包括: 信号名称 数据类型(例如,8 位.1 ...

  2. Simulink 环境基础知识(十八)--确定信号维度

    目录 确定信号维度 支持多维信号的 Simulink 模块 确定源模块的输出维度 确定非源模块的输出维度 信号和参数维度规则 输入信号和参数的标量扩展 确定信号维度 Simulink® 模块可以输出一 ...

  3. Simulink 环境基础知识(十六)--符号解析

    目录 符号 符号解析过程 用符号表示数值 用符号表示其他值 限制信号解析 显式和隐式符号解析 符号 在创建 Simulink® 模型时,可以使用符号为模型中许多类型的实体提供值和定义.可以使用符号定义 ...

  4. oracle:oracle基础知识(二)

    oracle基础知识(二)笔记:高级查询 文章目录 分组查询 多属性分组语法: 过滤查询 group by 语句增强 sqlplus报表功能 多表查询 等值连接 外连接 自连接 子查询 子查询中的空值 ...

  5. CV:计算机视觉技术之图像基础知识(二)—图像内核的可视化解释

    CV:计算机视觉技术之图像基础知识(二)-图像内核的可视化解释 目录 图像内核的可视化解释 测试九种卷积核 官方Demo DIY图片测试 DIY实时视频测试 相关文章 CV:计算机视觉技术之图像基础知 ...

  6. CV:计算机视觉技术之图像基础知识(二)—以python的skimage和numpy库来了解计算机视觉图像基础(图像存储原理-模糊核-锐化核-边缘检测核,进阶卷积神经网络(CNN)的必备基础)

    CV:计算机视觉技术之图像基础知识(二)-以python的skimage和numpy库来了解计算机视觉图像基础(图像存储原理-模糊核-锐化核-边缘检测核,进阶卷积神经网络(CNN)的必备基础) 目录 ...

  7. (五)JS基础知识二(通过图理解原型和原型链)【三座大山之一,必考!!!】

    JS基础知识二(原型和原型链) 提问 class 继承 类型判断(instanceof) 原型 原型关系 基于原型的执行规则 原型链 说明 提问 如何准确判断一个变量是不是数组 class的原型本质 ...

  8. 网络基础知识(二) HTTP

    网络基础知识(二) HTTP 黑发不知勤学早,白首方悔读书迟. 内容参考:https://www.runoob.com/http/http-content-type.html HTTP协议是Hyper ...

  9. CV:计算机视觉技术之图像基础知识(二)—图像内核的九种卷积核可视化解释(blur/bottom sobel /emboss/identity /sobel /outline/sharpen)

    CV:计算机视觉技术之图像基础知识(二)-图像内核的九种卷积核可视化解释(blur/bottom sobel /emboss/identity /left sobel /outline/right s ...

  10. scikit-learn学习基础知识二

    scikit-learn学习基础知识二 文章目录 scikit-learn学习基础知识二 一.介绍 二.代码实现 三.运行结果 四.总结 一.介绍 本文我们学习scikit-learn中的KNeigh ...

最新文章

  1. foreign 磁盘阵列_服务器磁盘 foreign
  2. CCAI 2020 | 黄铁军:“仿真主义”下的人工智能发展之路
  3. easyUI datagrid 多行多列数据渲染异常缓慢原因以及解决方法
  4. 译文| 相信指标还是相信经验?
  5. java编译器使用教程_Java编译器API简介
  6. Spring Boot 打成war包的方法
  7. 声明 static 变量注意事项
  8. MyEclipse中Hibernate+C3P0连接池配置
  9. (二十四)JSP标签之基本标签(jsp:标签名)
  10. MVC中页面的传值方式总结
  11. findContours函数参数详解
  12. ASP.NET - 网页重定向 Response.Redirect()
  13. 2020年第六届 美亚杯电子取证 团体赛 wp
  14. 三菱FX系列PLC连接触摸屏及组态软件以太网通信方案
  15. 内蒙古等保测评机构项目测评收费价格标准参考
  16. 飘扬的旗帜!shader 编程实战!Cocos Creator!
  17. CrossAir CA-C03 2.4G贴片天线使用步骤
  18. 模糊查找文件和文件夹
  19. 剑指offer----C语言版----第十一天
  20. Permute 3.5.9 小巧便捷的多媒体文件格式转换器

热门文章

  1. 分治算法以及经典例题
  2. python数字排列组合去重_python解决排列组合问题的4种方式
  3. 常数1的傅里叶变换详解过程
  4. 如何用计算机求矩阵的逆矩阵,逆矩阵的求法
  5. 云服务器ECS能做什么用途?
  6. Wifi热点工具-青青草原WiFi
  7. oracle周数计算
  8. 有关汉字编码、拼音输入法 大搜罗
  9. 计算机IP地址pin,怎样PIN ip地址
  10. android程序设计排序方法,Android编程实现对文件夹里文件排序的方法