统一MATLAB和SIMULINK:用户金宝app故事第4部分
在今天的帖子中,我继续扩展过去几周引入的框架。如果您错过了本系列中的先前帖子,则这里有链接:
- 统一MATLAB和SIMULINK:用户金宝app故事第1部分:用MATLAB对象参数化模型
- 统一MATLAB和SIMULINK:用户金宝app故事第2部分: 这Slpart类,块模板和数据变体
- 统一MATLAB和SIMULINK:用户金宝app故事第3部分:用MATLAB对象控制变体
- 统一MATLAB和SIMULINK:用户金宝app故事第4部分:后处理和可视化记录数据
- 统一MATLAB和SIMULINK:用户金宝app故事第5部分:较大的例子
到目前为止,在本系列中,我引入的框架主要集中在配置模型上,并通过从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
myspring2.log
定义自定义后处理和可视化
既然每个部分都可以检索自己的数据,则可以定义零件结果的自定义后处理和可视化。为了说明它如何工作,我重新布置了我的示例项目,以使两者都有
弹簧线
和
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这样的工作流程?在下面的评论中让我们知道。
评论
要,请,请点击此处登录到您的的帐户帐户或一个新。。。