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