人在仿真软件万博1manbetx

万博1manbetx仿真软件和基于模型的设计

用数学表达式指定变量的值

今天我想谈谈变量,需要通过一个仿真软件模型,其他变量的函数。万博1manbetx
让我们来一个直角三角形的简单的例子:
对于大多数仿真软件万博1manbetx的用户,如果你有一个模型需要的长度斜边或这个三角形的面积,最终你可能会编写一个脚本如下:
= 3;
b = 4;
c =√a ^ 2 + ^ 2);
面积= (a * b) / 2;
然后,在块参数,您将使用变量 c 区域 :
不相关的笔记关于上面的截图:
  • 我喜欢使用偏见阻止这种类型的简单的例子;它接收来自尺寸零块并添加参数值。这只是试验/调试,不使用这种模式,而不是一个常数在“正常”模式。
  • 黄色的矩形显示偏差块输出值端口值显示。这些都是有用的调试仿真结果没有块添加到模型中。
上面的脚本工作的时候,它会导致明显的问题。例如,如果我改变变量 一个 重新评估斜边,但忘记重新评估该区域?
虽然这是相对容易避免正常模式模拟,这可以更容易犯错误时更高级的操作,例如当使用快速启动或仿真软件的编译器。万博1manbetx
好事是,这是一个函数,可以帮助: slexpr

使用一个表达式作为一个参数对象的价值

创建一个原始变量之间紧密联系( 一个 b) 和的变量,函数( c 区域 ),你需要做的第一件事就是把这些变量 万博1manbetxSimulink.Parameter 对象。
一个= 万博1manbetxSimulink.Parameter (3);
b = 万博1manbetxSimulink.Parameter (4);
如果你不熟悉参数对象,你可以阅读更多关于这个话题 在这里 。这些对象启用更多比我描述在这篇文章中,特别是关于如何生成C / c++代码 万博1manbetx仿真软件编码器 嵌入式编码器
一次 一个 b 创建了对象作为参数,您可以使用它们 slexpr 指定一个表达式的值其他仿真软件。万博1manbetx参数对象:
c = 万博1manbetxSimulink.Parameter (slexpr (“sqrt (b ^ ^ 2 + 2)”));
面积= Sim万博1manbetxulink.Parameter (slexpr (“(a *) * 0.5”));
然后,您可以使用变量 c 区域 在仿真软件万博1manbetx模型就像如果他们双重数据类型变量的例子在这篇文章的开始:
为了比较结果从这个原始用例的例子在下面这篇文章,让我们编程模拟模型,看看结果第一外港块:
= sim卡(“testMdl”);
out.yout {1} .Values.Data
ans = 5
什么变得有趣的是,一旦这个设置,您可以简单地改变原始变量的值, 一个 b 和变量表达式中使用它会自动看到改变。
一个。值= 8;
= sim卡(“testMdl”);
out.yout {1} .Values.Data
ans = 8.9443

利用表达式在快速重启

用例这个特性尤其有用 快速启动 万博1manbetx仿真软件的编译器 ,该模型被编译一次,新变量值需要显式地传递到sim命令。这里有一个例子使用快速启动:
一个。值= 3;%恢复值或一个从最初的例子
(1:5)= Sim万博1manbetxulink.SimulationInput (“testMdl”);
i = 1:长度()
在(我)=(我).setVariable (“一个”,我);
结束
= sim (,“UseFastRestart”,“上”,“ShowProgress”,“关闭”);
[out.yout {1} .Values.Data]
ans = 1×5
4.1231 4.4721 5.0000 5.6569 6.4031

快速的加速器和仿真软件的编译器万博1manbetx

另一个上下文表达式作为参数值是有用的 快速的加速器 。同样的五个模拟与前面的例子中,我可以在快速模拟油门没有引发重建与下面的代码:
(1:5)= Sim万博1manbetxulink.SimulationInput (“testMdl”);
i = 1:长度()
在(我)=(我).setModelParameter (“simulationmode”,“快速”);
在(我)=(我).setModelParameter (“rapidacceleratoruptodatecheck”,“关闭”);
在(我)=(我).setVariable (“一个”,我);
结束
万博1manbetxSimulink.BlockDiagram.buildRapidAcceleratorTarget (“testMdl”);
# # #建筑快速加速器目标模型:testMdl # # #成功地建立了快速加速器目标模型:testMdl模型快速加速器目标建立:总结构建模型重建行动的原因= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = testMdl代码生成和编译代码生成信息文件不存在。1 1模型的建立(0模型已经更新)构建持续时间:0 h 0米10.199秒
= sim (,“ShowProgress”,“关闭”);
[out.yout {1} .Values.Data]
ans = 1×5
4.1231 4.4721 5.0000 5.6569 6.4031
没有 slexpr ,所有的模拟参数就会看到相同的值 c
因为仿真软件万博1manbetx编译器依赖于快速加速器技术,这种技术也应用在这种情况下。

模型浏览器和数据字典

如果你定义数据使用 模型浏览器 或在一个 数据字典 ,您可以使用“=”操作符一样 slexpr 允许在MATLAB脚本。

现在轮到你了

你利用的可能性使用表达式作为参数对象的价值吗?在下面的评论中让我们知道。
|

评论

留下你的评论,请点击在这里MathWorks账户登录或创建一个新的。