在模型中定义 Simulink 函数
您可以通过多种方式定义和实现 Simulink® 函数。
Simulink Function 模块 - 使用 Simulink 模块定义函数。
Chart (Stateflow) - 在 Stateflow® 图中定义图形函数、MATLAB® 函数或 Simulink 函数,并导出到 Simulink 模型。有关详细信息,请参阅Export Stateflow Functions for Reuse (Stateflow)。
S-Function 模块 - 使用 S-Function 模块定义函数。请参阅
ssDeclareSimulinkFunction。
以下各节说明如何为函数 y = timestwo(x) 定义 Simulink 函数。该函数将来自调用方的值 (x) 乘以 2,然后将计算得到的值 (y) 发送回调用方。要调用这些函数,请参阅 Call a Simulink Function from a Model。
定义和调用 Simulink 函数
名为 ex_simulink_functions_and_function_callers 的模型显示定义和调用 Simulink® 函数的多种方法。

该模型通过以下方式定义 Simulink 函数:
Simulink Function 模块
导出图形函数的 Stateflow® 图
导出 MATLAB® 函数的 Stateflow 图
该模型通过以下方式调用每个 Simulink 函数:
Function Caller 模块
MATLAB Function 模块
Stateflow 图
使用 Simulink Function 模块定义 Simulink 函数
设置一个 Simulink Function 模块以通过输入参量从函数调用方接收数据,然后通过输出参量返回输出。
为您的模型添加一个 Simulink Function 模块。
双击该模块上显示的文本并输入函数原型。
y = timestwo(x)

双击该模块以打开子系统。
添加 Gain 模块,并将增益参数设置为
2。
使用从 Stateflow 图导出的函数定义 Simulink 函数
您可以使用从 Stateflow 图导出的函数来定义 Simulink 函数。在 Stateflow 图中,您可以使用图形函数、MATLAB 函数或 Simulink 函数来实现函数行为。本节介绍如何定义和导出图形函数。您也可以按照下列步骤来定义和导出 MATLAB 函数或 Simulink 函数。
在 Stateflow 图中建立图形函数,通过输入参量从函数调用方接收数据,并通过输出参量返回输出。设置图参数以将函数导出到 Simulink 模型。
在 Stateflow 图中定义图形函数
在 Stateflow 图中定义图形函数。指定函数原型并实现函数行为。
将 Stateflow 图添加到您的 Simulink 模型中。
双击打开图。
添加图形函数。从左侧工具栏中,点击图形函数图标
并将其拖到图上。指定函数原型。在函数框中,用函数原型
y = timestwo(x)替换?。实现函数行为。点击转移箭头,并将
?替换为{y = 2*x}。
测试图形函数
在导出为 Simulink 模型之前,在 Stateflow 图中测试图形函数。
在图中添加用于测试函数的默认转移。从左侧工具栏中,点击默认转移箭头
并将其拖到图上。 双击箭头,将
?替换为{y1 = timestwo(x1)}。向图中添加输入端口。打开模型资源管理器。在左侧窗格中,选择表
Chart。从菜单中,选择添加 > 数据。将名称设置为x1并将范围设置为输入。向图中添加输出端口。从菜单中,选择添加 > 数据。将名称设置为
y1并将范围设置为输出。添加 Sine Wave 模块以提供测试数据作为输入,并添加 Scope 模块以查看输出的结果。

对图进行仿真。
为图形函数设置参数
指定函数输入和输出参量的大小、复/实性和类型。图只能导出具有完全指定的原型的函数。
打开模型资源管理器。在建模选项卡上,从设计部分中,选择模型资源管理器
。在左窗格中,选择图形函数。

从中间窗格的列视图列表中,选择 Stateflow。选择过滤器图标
,然后从切换列表中选择所有 Stateflow 对象。从中部窗格表中,选择输入或输出参量。
在右窗格中,将大小设置为
1,将复/实性设置为 Off,并将类型设置为 double。
使用输出函数参量
y重复步骤2和3。
为图形函数设置导出函数参数
设置参数,以便在仿真过程中将图形函数从 Stateflow 图导出到 Simulink 模型。
打开模型资源管理器。在左窗格中,选择包含图形函数的图。

在属性检查器中,选择导出图级别函数,然后点击应用按钮。然后选择将导出的函数视为全局可见。
如果从另一个 Stateflow 图调用导出的图形函数,则不需要启用将导出的函数视为全局可见参数。
有关详细信息,请参阅Export Stateflow Functions for Reuse (Stateflow)。
另请参阅
Simulink Function | Chart (Stateflow) | Argument Inport | Argument Outport | Function Caller