主要内容

重用MATLAB代码定义MATLAB功能

一个MATLAB®函数在状态流中®chart是一个图形元素,用于编写通过调用内置MATLAB函数更容易实现的算法。典型的应用包括:

  • Matrix-oriented计算

  • 数据分析和可视化

这种类型的函数对于使用MATLAB而不是图形化的statflow构造更容易表达的算法编码很有用。MATLAB函数还提供了为嵌入式应用程序生成高效、生产质量高的C代码的优化。

Matlab函数可以驻留在图表中的任何位置,状态或子剖面。该功能的位置确定可以调用该函数的状态和转换集。

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

  • 如果您想在图表中的任何位置调用函数,请将MATLAB函数放在图表级别。

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

请注意

MATLAB函数可以在statflow层次结构中访问图表和上面的状态数据。

例如,这个MATLAB函数有个名字stdevstats.它需要一个参数瓦尔斯并返回一个输出值stdevout

来计算中值的标准差瓦尔斯,函数使用此代码。

函数stdevout = stdevstats (val)% # codegen%计算val的标准偏差len =长度(val);stdevout =√总和(vals-avg (vals, len)) ^ 2)) / len);函数Mean = avg(array,size) /size;

定义A.MATLAB图表中的功能

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

  2. 输入函数的签名标签。

    函数签名标签指定函数的名称及其参数和返回值的正式名称。签名标签有这样的语法:

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

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

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

    请注意

    不要使用图表符号的名称作为函数参数或返回值。例如,如果有x或者y图表数据是用签名定义函数的吗y = f (x)导致运行时错误。

  3. 编程时,双击函数框打开MATLAB编辑器。

  4. 在MATLAB编辑器中,输入实现函数的MATLAB代码。有关更多信息,请参见在一个图表中编程一个MATLAB函数

  5. 在Model Explorer中,展开图表对象并选择MATLAB函数。函数签名的参数和返回值显示为属于函数的数据项。参数有作用域输入.返回值具有作用域输出

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

  7. 创建函数所需的任何附加数据项。有关更多信息,请参见通过模型资源管理器添加数据

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

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

    • 参数- 参数数据通过所有函数调用保留其初始值。

    在MATLAB函数中,不需要显式地创建局部或临时函数数据。如果使用未定义的变量,statflow将创建一个临时变量,该变量对函数的其余部分可用。要存储跨函数调用持久化的值,请使用关键字持续的

调用MATLAB状态和转换中的函数

您可以从任何状态或过渡的动作调用MATLAB函数。您也可以从其他函数调用MATLAB函数。如果您导出一个MATLAB函数,您可以从模型中的任何图表调用它。

要调用MATLAB函数,请使用函数签名,并在函数签名中为每个正式参数包含一个实际参数值。如果实际参数和形式参数的数据类型不同,则函数将实际参数转换为形式参数的类型。

指定的属性MATLAB功能

您可以在模型资源管理器或MATLAB函数属性对话框中为MATLAB函数指定属性。

  • 要使用Model Explorer:

    1. 要打开模型资源管理器,在建模选项卡上,选择模型浏览器

    2. 模型层次结构窗格,选择MATLAB函数。

    3. MATLAB函数窗格,编辑MATLAB函数属性。

  • 使用MATLAB函数属性对话框:

    1. 在statflow编辑器中,右键单击MATLAB函数。

    2. 选择属性

    3. 编辑MATLAB函数属性。

您也可以通过使用编程指定MATLAB函数属性Stateflow。EMFunction对象。有关Stateflow编程接口的更多信息,请参见Stateflow API概述

的名字

函数名。单击函数名链接,在MATLAB编辑器中打开函数。

内联函数的选择

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

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

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

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

标签

签名标签为您的功能。函数签名标签指定函数的名称和其参数和返回值的正式名称。

饱和整数溢出

指定在生成的代码中整数溢出是否饱和。有关更多信息,请参见处理图表数据的整数溢出

此属性仅适用于以C为操作语言的图表中的MATLAB函数。在以MATLAB为动作语言的图表中,数据的行为依赖于值整数溢出饱和属性用于图表。

MATLAB函数fimath

定义了fimath属性的MATLAB函数。的fimath指定的属性与所有属性关联fifimath在MATLAB函数中构造的对象。选择以下选项之一:

  • MATLAB一样—功能使用相同fimath属性作为当前全局变量fimath.编辑框显示为灰色,并显示当前全局视图fimath以只读的形式。获取更多全球信息fimathfimath对象,请参阅定点设计器™文档。

  • 指定其他-指定你自己的fimath对象的一个方法:

    • 建造fimath对象在编辑框中。

    • 建造fimath对象,并在编辑框中输入其变量名。

此属性仅适用于以C为操作语言的图表中的MATLAB函数。在以MATLAB为动作语言的图表中,数据的行为依赖于值MATLAB图表fimath属性用于图表。

描述

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

文档链接

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

相关主题