Simulin金宝appk上的Guy

金宝appSimulink &基于模型的设计

统一MATLAB和Simulink:用户金宝app故事(4

在今天的文章中,我继续扩展过去几周介绍的框架。如果你错过了本系列之前的文章,这里有链接:
在本系列文章中,到目前为止,我介绍的框架主要集中在配置模型上,通过从MATLAB类库实例化MATLAB对象来简单地“选择一个部分”。在这篇文章中,我将“统一MATLAB和Simulink”的思想扩展到模拟后的日志数据管理和后处理。金宝app
最后,我希望你们能明白 slPart 框架导致完全包含的组件,其中包括预定义的参数化、变量和函数/方法,以便在MATLAB中与之交互。假设 slPart 已由领域专家创建和验证,然后可以与其他用户共享,并以直接且易于发现的方式使用。

检索记录数据的方法

当我创建 slPart 课上,我加了一个 BlockPath 属性,并提到它以后会有用。现在是时候使用它了!
我用什么 BlockPath 用于检索子系统内记录的数据。为此,我创建了一个方法 金宝app仿真软件。SimulationOutput对象 并解析它以将记录的数据存储在新添加的 日志 的属性 slPart 对象。此方法简单地利用 找到 方法 金宝appSimulink.SimulationData.Dataset 对象。这就是 slPart 类现在看起来像:
classdefslPart < handle
属性(Hidden = true)
BlockPath字符
日志金宝appSimulink.SimulationData.Dataset
结束
方法
函数obj = maskInit(obj,blk)
%见以前的文章
结束
函数obj = getLog(obj,out)
obj.Log = out.logsout.find(“正则表达式”“BlockPath”, (obj。BlockPath”(/ . *)?美元的]);
结束
结束
结束
这样,如果我用多个部分模拟一个模型,每个部分将能够检索自己的数据。
例如,让我们把在上一篇文章中创建的带有变量的spring的两个副本放在一起,并用不同的对象对它们进行参数化。
为每个对象分配不同类的对象并进行模拟。一旦模拟完成,每个对象可以检索自己的日志数据:
mdl =“spring_sim”
mySpring1 = springLib.springN1234;
mySpring2 = springLib.springNonLinearV1;
Out = sim(mdl);
mySpring1.getLog(出);
mySpring2.getLog(出);
mySpring1.Log
ans =
金宝app包含3个元素的Simulink.SimulationData.Dataset 'logsout' 的名字 BlockPath ________ ________________________________________1 [1x1信号]位置…/变量slPart 1/线性弹簧/集成2 [1x1信号]速度…/变量slPart 1/线性弹簧/集成3 [1x1信号]力…im/Variant slPart 1/linear spring/Sum -使用大括号{}访问,修改或添加使用索引的元素。
mySpring2.Log
ans =
金宝app包含3个元素的Simulink.SimulationData.Dataset 'logsout' 的名字 BlockPath ________ ________________________________________1 [1x1信号]位置…ant slPart 2/非线性弹簧/集成2 [1x1信号]速度…ant slPart 2/非线性弹簧/Integ 3 [1x1信号]力…variant slPart 2/ nonlinear spring/Sum -使用大括号{}访问,修改或添加使用索引的元素。

定义自定义后处理和可视化

既然每个部件都能够检索自己的数据,那么就可以为部件定义自定义的后处理和结果可视化。为了说明这是如何工作的,我稍微重新安排了我的示例项目,使两者都有 springLinear 而且 springNonLinear 继承相同的子类 春天 超类。类的依赖关系现在看起来是这样的 类图查看器
matlab.diagram.ClassViewer (“文件夹”currentProject () .RootFolder);
这次重组之后,我又增加了一个简单的 plotPower 方法。 春天 类。由于每个弹簧子系统都有两个记录信号,分别命名为“速度”和“力”,我将它们相乘以创建“功率”时间序列并绘制它。这就是 春天 类看起来像:
classdefspring < slPart
方法
函数plotPower (obj)
power = obj.Log.get(“速度”) . values * obj.Log.get (“力”) . values;
权力。Name =“权力”
情节(权力)
结束
结束
结束
类继承的每个对象都可以调用此方法,使用与上面相同的模型 春天 类。
mdl =“spring_sim”
mySpring1 = springLib.springN1234;
mySpring2 = springLib.springNonLinearV1;
Out = sim(mdl);
mySpring1.getLog(出);
mySpring2.getLog(出);
图;
mySpring1.plotPower;
持有
mySpring2.plotPower;

现在轮到你了

现在我已经介绍了变量和日志记录,我希望拥有这样一个框架的好处越来越明显。
当与其他用户共享在此框架中开发的组件时,他们收到的不仅仅是在Simulink中实现的算法;金宝app它们还会收到一组预定义的参数化和一组与之交互的函数/方法,这些都是由创建组件的领域专家创建和验证的。
除此之外,选项卡补全还有助于发现该组件可用的功能。
您可以下载项目的当前版本 在这里
您对这样的框架有什么看法?你认为未来的Simulink版本应该有更多的内置功能来促进这样的金宝app工作流程吗?请在下面的评论中告诉我们。
|

コメント

コメントを残すには,ここをクリックしてMathWorksアカウントにサインインするか新しいMathWorksアカウントを作成します。