通过定义图形化函数重用逻辑模式
一个图形函数在状态流中®图表是一种图形元素,可以帮助您重用控制流逻辑和迭代循环。使用连接连接和过渡的流程图创建图形化函数。您可以在状态和转换的操作中调用图形化函数。使用图形函数,您可以:
创建模块化的、可重用的逻辑,可以在图表的任何地方调用。
在图表动画期间可视地跟踪模拟行为。
图形化函数可以驻留在图表、状态或子图表中的任何位置。函数的位置决定了可以调用该函数的状态和转换集。
如果希望在一个状态或子图及其子图中调用函数,请将图形函数置于该状态或子图中。该函数覆盖该状态或子图的父函数和父函数中同名的任何其他函数。
如果希望在图表中的任何位置调用函数,请将图形化函数放在图表级别。
如果希望从模型中的任何图表调用该函数,请将图形化函数置于图表级别,并启用导出图表级别函数。有关更多信息,请参见导出状态流函数以供重用.
请注意
图形化函数可以在statflow层次结构中访问它上面的图表和状态数据。
例如,这个图形化函数的名称为f1
.它有三个参数(一个
,b
,c
),并返回三个输出值(x
,y
,z
).该函数包含一个流程图,用于计算参数的三个不同乘积。下载188bet金宝搏
定义一个图形函数
在对象面板中,单击图形化函数图标.
在图表画布上,单击新图形化功能的位置。
输入功能的签名标签。
函数的签名标签为函数指定名称,并为其参数和返回值指定正式名称。签名标签的语法如下:
[return_val1, return_val2,…= function_name(arg1,arg2,…)
可以对参数和返回值使用相同的变量名。例如,具有此签名标签的函数使用变量
日元
而且y2
作为输入和输出:[y1,y2,y3] = f(y,u,y2)
日元
而且y2
通过引用(作为指针)传递,和u
通过值传递。通过引用传递输入可以减少生成的代码复制中间数据的次数,从而得到更优的代码。若要对函数进行编程,请在函数框中构造流程图,如中所述在statflow中创建流程图.
因为图形化函数在调用时必须完全执行,所以不能使用状态。连接连接和过渡是可以在图形函数中使用的唯一图形元素。
请注意
在图形化函数中,不要广播可能导致活动状态改变的事件。在图形化函数中,导致退出活动状态的事件广播的行为是不可预测的。
在模型资源管理器中,展开图表对象并选择图形化函数。函数签名的参数和返回值显示为属于函数的数据项。参数具有作用域
输入
.返回值具有作用域输出
.在每个参数和返回值的“数据属性”对话框中,指定数据属性,如中所述设置数据属性.
创建函数所需的任何其他数据项。有关更多信息,请参见通过模型管理器添加数据.
函数可以访问自己的数据或属于父状态或图表的数据。函数中的数据项可以具有以下作用域之一:
常数
-常量数据在所有函数调用中保持其初始值。参数
-参数数据在所有函数调用中保持初始值。当地的
-在整个模拟过程中,本地数据在函数调用之间保持不变。仅在使用C作为操作语言的图表中有效。临时
-临时数据在每次函数调用开始时初始化。仅在使用C作为操作语言的图表中有效。
在使用C作为操作语言的图表中,如果希望在整个模拟过程中跨函数调用持久化数据值,请定义本地数据。如果希望在每次函数调用开始时初始化数据值,请定义临时数据。例如,可以用定义一个计数器
当地的
范围,如果您想跟踪调用函数的次数。相反,您可以指定一个循环计数器临时
如果不需要在函数完成后保持计数器值,则范围。在图表中使用MATLAB®作为操作语言,您不需要定义本地或临时函数数据。如果使用未定义的变量,Stateflow将创建一个临时变量,该变量可用于函数的其余部分。要存储跨函数调用持久化的值,函数可以在图表级别访问本地数据。
提示
可以从MATLAB工作区初始化函数中的本地和临时数据。有关更多信息,请参见从MATLAB基础工作区初始化数据.
在状态和转换中调用图形函数
您可以从任何状态或转换的操作或从其他函数调用图形函数。如果导出图形化函数,则可以从模型中的任何图表调用它。有关导出函数的详细信息,请参见导出状态流函数以供重用.
若要调用图形化函数,请使用函数签名,并在函数签名中为每个形式参数包含实际实参值。
[return_val1, return_val2,…= function_name(arg1,arg2,…)
如果实际实参和形式实参的数据类型不同,该函数将实际实参转换为形式实参的类型。
管理大型图形功能
您可以选择使图形函数尽可能大。如果函数变得太大,可以在函数框内右键单击并选择,从而隐藏其内容组子图>子图表从上下文菜单。
若要使图形化函数框不透明,请右键单击该函数并清除内容预览属性。
要将整个图表窗口用于编程函数,请通过双击函数框来访问子图表图形函数中的流程图。有关更多信息,请参见使用子图封装模态逻辑.
指定图形函数的属性
下面列出的属性使您能够指定图形化函数如何与Stateflow图中的其他组件交互。控件中为图形化函数指定属性属性检查器、“模型资源管理器”或“函数属性”对话框。
使用属性检查器:
在建模选项卡,在设计数据中,选择属性检查器.
在Stateflow Editor中,选择图形化函数。
在属性检查器,编辑转换属性。
使用模型资源管理器:
在建模选项卡,在设计数据中,选择模型浏览器.
在模型层次结构窗格中,选择图形化函数。
在对话框窗格中,编辑图形化函数属性。
使用“功能属性”对话框:
在“状态流编辑器”中,右键单击图形化函数。
选择属性.
在属性对话框中,编辑图形化函数属性。
还可以通过使用以编程方式指定图形函数属性Stateflow。函数
对象。有关statflow编程接口的详细信息,请参见statflow API概述.
的名字
函数名。单击函数名称链接,将函数放在其本机图表的前台。
函数内联选项
在生成的代码中控制函数的内联:
汽车
-根据内部计算确定是否内联函数。内联
-内联你的函数,如果你没有导出到其他图表,它不是递归的一部分。(如果你的函数通过另一个函数调用直接或间接地调用自己,就存在递归。)函数
-不内联你的函数。
属性中不可用此属性属性检查器.
标签
为您的功能签名标签。函数签名标签为函数指定名称,并为其参数和返回值指定正式名称。属性中不可用此属性属性检查器.
描述
图形化函数的描述。
文档链接
链接到图形化功能的在线文档。您可以在“MATLAB命令窗口”中输入web URL地址或MATLAB命令,以HTML文件或文本的形式显示文档。当你点击文档链接, Stateflow计算链接并显示文档。
另请参阅
对象
工具
- 模型浏览器(金宝app模型)