Simulin金宝appk上的Guy

金宝appSimulink &基于模型的设计

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

最近,我与一组用户进行了一次有趣的讨论,内容是关于建模、仿真以及仿真数据管理如何在他们的公司中发展。他们提出的是一个框架,其中基本单元(他们称之为“部件”)是系统地由Simulink组成的金宝app 戴面具的子系统 和一个 MATLAB类
他们为什么要这么做?为了回答这个问题,我将引用该组用户的一句话: 对我们来说,真正驱动MATLAB类的是跨系统规模重用的想法。从单元测试开发到集成模型 ."
我个人认为这个框架使用起来非常方便,所以我认为这将是一个有趣的故事,可以在这个博客上分享。在他们的允许下,我把我从他们那里学到的方法分享给大家。
这太复杂了,不能在一篇文章中分享,所以我想出了一系列的博客文章:
  1. 定义模型数据:从硬编码值到MATLAB对象(本文)
  2. 超类和模板子系统作为框架的基础
  3. 使用MATLAB对象控制变量
  4. 使用MATLAB对象管理日志记录
我将在本系列文章发布时向该列表添加超链接。
我很好奇在下面的评论中听到你对这一系列博客文章中描述的方法的看法,以及你管理模拟数据的不同之处和原因。
在第一篇文章中,我将介绍这组用户如何为Simulink模型定义和指定数据。金宝app

我的第一个Simu金宝applink模型

第一次创建Simulink模型时,您很可能在块对话框中硬编金宝app码数字。
您可以在。中找到这样的示例模型 第一部分 基本建模流程
可以想象,这不是一个可扩展的解决方案。如果我想用一组不同的参数来模拟一个模型呢?

MATLAB和Simu金宝applink 101:脚本和变量

我看到的在Simulink中进行数据管理的第一个自然步骤通常是在块对话框中指定变量,创建一个MATLAB脚本来金宝app定义这些变量,并在MATLAB基础工作空间中评估这个脚本。
这样做的好处是可以将数据定义与模型分离。例如,您可以创建多个版本的MATLAB脚本来为模型定义多个数据集。
另一方面,这也会导致可伸缩性问题和许多潜在的冲突,特别是在协作环境中。如果其他人添加了一个带有同样名为“ 或" k ”?

MATLAB和Simu金宝applink 301:函数,结构和屏蔽子系统

在Simulink中封装算法的最常用方法是通过金宝app 屏蔽 .多亏了掩码工作区,掩码提供了对块数据的受控访问。
类似地,在MATLAB中, 功能 给您一个工作空间来封装数据。
结合这两个概念,这个进化的下一步是创建一个MATLAB函数返回 结构 包含屏蔽子系统所需的所有数据。
在Si金宝appmulink中,算法用一个变量(在本例中称为“data”)来掩盖,然后在各个块中使用结构字段。
这样,如果我用这个系统的多个实例创建一个模型,就可以轻松地创建不同的数据结构。
并将它们传递给block的不同实例。

嵌套结构

结构的一个优点是可以嵌套它们。如果您有一个由多个组件和子组件组成的复杂Si金宝appmulink模型,您可以用类似的方式对其进行参数化,使用由子结构和子子结构组成的MATLAB结构。
让我们以顶层有一个子系统的模型为例, ComponentA ,由两个子系统组成, 我的春天 而且 我的春天2
以类似于前面迭代的方式,我可以为顶级组件创建一个函数,该函数调用两个子组件的初始化函数:
并将其传递给包含这两个组件的屏蔽子系统:
在这一点上,这种组件层次结构的宽度和深度实际上没有限制。
在一天结束的时候,你在MATLAB中有一个变量,它包含一个与你的模型结构相似的结构。

MATLAB和Simu金宝applink 501:类和对象

这种进化的下一步是从结构过渡到MATLAB类。在最简单的形式中,将数据存储在MATLAB类的属性中非常类似于将数据存储在结构的字段中。
如果我们将质量-弹簧-阻尼器的例子从结构转换到MATLAB类,它会是这样的:
一旦创建了类文件,就可以实例化它并将对象传递给mask参数,就像传递结构一样。
与上面描述的结构相同,MATLAB对象也可以嵌套。在这种情况下,对象成为父对象的属性。正如我们在结构用例中所做的那样,让我们创建一个由两个spring实例作为子组件组成的组件,但是使用不同的参数值:
这些可以像结构一样作为掩码参数传递。
我不会在这篇文章中详细介绍,但与结构相比,MATLAB类具有多种优势。除了声明一个正式的属性列表外,MATLAB类还允许您定义自定义显示和参数验证方法等内容。例如,您可以验证一个参数是否属于特定的数据类型,或者是否在某个值范围内。如果你想阅读更多关于这个主题的文章,我建议你看看这篇博客文章 蒂姆•约翰 开发区域 博客: 《电子邮件》

现在轮到你了

我将在这里停止这第一篇文章。在下一篇文章中,我将深入探讨MATLAB对象在这种情况下的优势和可能性。
我见过许多用户利用MATLAB结构和对象来参数化Simulink模型。金宝app如果这是你的情况,我很有兴趣在下面的评论中听到是什么导致你采用这种解决方案,以及你看到这种技术有什么优点/不方便。
|

コメント

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