文档

通过定义图形函数重用逻辑模式

一个图形函数在状态流中®图表是一种图形元素,可以帮助您重用控制流逻辑和迭代循环。您可以使用使用连接连接和过渡的流程图创建图形函数。您可以在状态和转换的动作中调用图形函数。使用图形函数,您可以:

  • 创建模块化的、可重用的逻辑,你可以在图表的任何地方调用它。

  • 在图表动画中可视化地跟踪模拟行为。

图形函数可以驻留在图表、状态或子图表中的任何位置。函数的位置决定了可以调用该函数的一组状态和转换。

  • 如果您只想在一个状态或子图表及其子图表中调用函数,请将图形函数放在该状态或子图表中。该函数覆盖该状态或子图的父级和父级中同名的任何其他函数。

  • 如果您希望在图表中的任何位置调用该函数,请将您的图形函数置于图表级别。

  • 如果您想从模型中的任何图表中调用该函数,请将图形函数置于图表级别,并启用导出图表级别函数。有关更多信息,请参见导出状态流函数以供重用

例如,这个图形函数的名称为f1。它接受三个参数(一个b,c)并返回三个输出值(xy,z).该函数包含一个流程图,用于计算参数的三种不同乘积。下载188bet金宝搏

定义图形函数

  1. 在对象调色板中,单击图形函数图标。将指针移动到图表中新图形函数的位置。

  2. 输入功能的签名标签,请参见声明函数参数和返回值

  3. 要对函数进行编程,请在函数框中构造流程图,如状态流中的流程图

    因为图形函数在调用时必须完全执行,所以不能使用状态。连接连接和过渡是您可以在图形函数中使用的唯一图形元素。

  4. 在模型资源管理器中,展开图表对象并选择图形函数。函数签名的参数和返回值显示为属于函数的数据项。参数的作用域为输入。返回值具有作用域输出

  5. 在每个参数和返回值的数据属性对话框中,指定数据属性,如设置数据属性

  6. 创建函数所需的任何其他数据项。有关更多信息,请参见通过模型浏览器添加数据

    您的函数可以访问它自己的数据或属于父状态或图表的数据。函数中的数据项可以具有以下作用域之一:

    • 当地的—从一个函数调用到下一个函数调用,本地数据保持不变。仅对C图表有效。

    • 常数—常量数据在所有函数调用中保持其初始值。

    • 参数—参数数据在所有函数调用中保持其初始值。

    • 临时-在每个函数调用开始时初始化临时数据。仅对C图表有效。

初始化函数数据

您可以从MATLAB中初始化函数数据(除了参数和返回值)®工作区。有关更多信息,请参见从MATLAB Base工作区初始化数据

定义临时数据

在使用C作为操作语言的图表中,当您希望使用仅在函数执行时有效的数据时,可以定义临时数据。例如,您可以指定要拥有的循环计数器临时如果计数器值在函数完成后不需要持续存在,则使用。

在使用MATLAB作为动作语言的图表中,您不需要定义临时函数数据。如果使用未定义的变量,则statflow会创建一个临时变量。该变量可用于函数的其余部分。

声明函数参数和返回值

函数签名标签为函数指定了名称,并为其参数和返回值指定了正式名称。签名标签的语法是这样的:

(return_val1return_val2,...] =function_name__arg1最长,……)
您可以指定多个返回值和多个输入参数。每个返回值和输入参数可以是标量、向量或值矩阵。对于只有一个返回值的函数,省略签名标签中的括号。

可以对参数和返回值使用相同的变量名。例如,具有此签名标签的函数使用变量日元y2作为输入和输出:

[y1, y2, y3] = f(y1, u, y2)
如果将这个函数导出为C代码,日元y2都是通过引用(作为指针)传递的,而u按值传递。通过引用传递输入减少了生成的代码复制中间数据的次数,从而产生更优化的代码。

在状态和转换中调用图形函数

您可以从任何状态或转换的动作调用图形函数。您还可以从其他函数调用图形函数。如果导出图形函数,则可以从模型中的任何图表调用它。

图形函数调用的语法与函数签名相同,使用实际参数替换签名中指定的正式参数。如果实际实参和形式实参的数据类型不同,则函数将实际实参强制转换为形式实参的类型。

提示

如果函数签名的形式参数是标量,请验证函数调用的输入和输出是否遵循标量展开的规则。有关更多信息,请参见给矩阵的所有元素赋值

指定图形函数属性

您可以通过图形函数的属性对话框设置图形函数的常规属性。要打开函数属性对话框,请右键单击图形功能框并选择属性从上下文菜单中。

名字

函数名。单击函数名称链接,将函数置于其本机图表的前台。

内联选项

在生成的代码中控制函数的内联:

  • 汽车-根据内部计算确定是否内联函数。

  • 内联-内联你的函数,如果你不导出到其他图表,它不是递归的一部分。(如果函数直接或间接地通过另一个函数调用调用自己,则存在递归。)

  • 函数-不内联你的函数。

标签

为您的功能签名标签。有关更多信息,请参见声明函数参数和返回值

描述

功能描述。您可以在层次结构中输入函数的简要描述。

文档链接

链接到该函数的在线文档。您可以输入web URL地址或MATLAB命令,以合适的在线格式显示文档,例如MATLAB命令窗口中的HTML文件或文本。当你点击文档链接超链接时,Stateflow显示文档。

管理大型图形功能

您可以根据需要选择使图形函数尽可能大。如果函数变得太大,可以通过在函数框内右键单击并选择来隐藏其内容分组和子图>子图表从上下文菜单中。

若要使图形函数框不透明,请右键单击该函数并清除内容预览属性。

若要将整个图表窗口用于对函数进行编程,请通过双击函数框来访问子图表图形函数中的流程图。

图形函数中的事件广播

在图形函数中,不要广播可能导致活动状态改变的事件。在图形函数中,导致退出活动状态的事件广播的行为是不可预测的。

相关的话题