家伙在simu金宝applink上

金宝app基于模型的设计

统一MATLAB和SIMULINK:用户金宝app故事第4部分

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

检索已记录数据的方法

当我创建 Slpart 上课,我添加了一个 区块路 财产,提到以后将有用。现在是时候使用它了!
我用什么 区块路 因为是检索子系统内登录的数据。为此,我创建了一种方法 金宝appsimulink.simulationOutput对象 并解析它以将记录的数据存储在新添加的 日志 属性 Slpart 目的。此方法只是利用 寻找 方法的方法 金宝appsimulink.simulationdata.dataset 目的。这是什么 Slpart 现在的课程看起来像:
ClassDefslpart <句柄
特性(隐藏= true)
区块路char
日志金宝appsimulink.simulationdata.dataset
结尾
方法
功能obj = maskinit(obj,blk)
%查看以前的帖子
结尾
功能obj = getlog(obj,out)
obj.log = out.logsout.find('-regexp',,,,“阻止路径”,[obj.blockpath'(/.*)?$');
结尾
结尾
结尾
这样,如果我模拟具有多个部分的模型,则每个部分都可以检索自己的数据。
例如,让我们将两个弹簧的副本放在上一篇文章中创建的变体,并用不同的对象对其进行参数化。
为每个类别分配不同类的对象并模拟。仿真完成后,每个对象都可以检索自己的记录数据:
mdl ='spring_sim';
myspring1 = springlib.springn1234;
mySpring2 = springlib.springnonlinalearv1;
out = sim(mdl);
mySpring1.getLog(out);
mySpring2.getLog(out);
myspring1.log
ans =
金宝appsimulink.simulationdata.dataset'logsout'带有3个元素 姓名 区块路 ________ ____________________________________________________1 [1x1信号]位置.../变体SLPART 1/线性弹簧/Integ 2 [1x1信号]速度.../变体SLPART 1/线性弹簧/Integ 3 [1x1信号]力... IM/变体SLPART 1/线性弹簧/总和 - 使用括号{}访问,修改或添加索引元素。
myspring2.log
ans =
金宝appsimulink.simulationdata.dataset'logsout'带有3个元素 姓名 区块路 ________ ____________________________________________________1 [1x1信号]位置... IANT SLPART 2/非线性弹簧/Integ 2 [1x1信号]速度... IANT SLPART 2/非线性弹簧/Integ 3 [1x1 Signal]力... Ariant Slpart 2/非线性弹簧/总和 - 使用括号{}访问,修改或添加索引元素。

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

既然每个部分都可以检索自己的数据,则可以定义零件结果的自定义后处理和可视化。为了说明它如何工作,我重新布置了我的示例项目,以使两者都有 弹簧线 Springnonlinear 分类相同 春天 超类。这是我的课程的依赖性现在看起来像 班级图查看器
matlab.diagram.ClassViewer(“文件夹”,currentProject()。rootfolder);
重组后,我添加了一个简单的 情节功能 方法 春天 班级。由于每个春季子系统都有两个记录的信号,称为“速度”和“力”,因此我将它们乘以创建“功率”时间 - 绘制它。这是什么 春天 课堂看起来像:
ClassDef春季
方法
功能情节功能(OBJ)
power = obj.log.get('速度').values*obj.log.get('力量')。
power.name ='力量';
情节(力量)
结尾
结尾
结尾
然后,使用与上述相同的模型,我可以为每个对象调用此方法,从 春天 班级。
mdl ='spring_sim';
myspring1 = springlib.springn1234;
mySpring2 = springlib.springnonlinalearv1;
out = sim(mdl);
mySpring1.getLog(out);
mySpring2.getLog(out);
数字;
myspring1.plotpower;
抓住
myspring2.plotpower;

现在轮到你了

现在,我介绍了变体和伐木,我希望拥有这样的框架的好处变得更加清晰。
当与其他用户共享此框架中开发的组件时,他们收到的不仅仅是Simulink中实现的算法;金宝app他们还将收到一组预定义的参数化以及一组与之交互的函数/方法,由创建组件的域专家创建和验证。
除此之外,Tab-Completion还有助于发现此类组件可用的内容。
您可以下载该项目的当前版本 这里
您如何看待这样的框架?您是否认为Simulink的未来版本应该具有更多的内置功能来设置金宝app这样的工作流程?在下面的评论中让我们知道。
|

评论

要,请,请点击此处登录到您的的帐户帐户或一个新。。。