S-Function 示例
这些示例向您展示如何使用各种 S-Function 或使用 S-Function 的程序,包括 C/C++ S-function、Fortran S-Function、S-Function 生成器、Level 2 MATLAB® S-Function 和 Blockset Designer。每个部分都解释了如何打开文件以及文件的内容。这些都是在学习基础知识之后继续加深对 S-Function 的理解的好地方。这些并不代表 S-Function 的所有可用示例,而只是相关的小节。
访问 S-Function 示例
大多数 S-Function 示例都是通过 sfundemos 运行的。此示例库包含 S-Function 模型,并按编码类型分组,例如 C S-Function 或 C++ S-Function。
要从 sfundemos 运行示例:
在 MATLAB 命令行窗口中,输入
sfundemos。S-Function 示例库打开。

每个模块代表一类 S-Function 示例。
双击某个类别即可显示其包含的示例。例如,点击 C 文件。

双击一个模块以打开并运行它所代表的示例。
在阅读下一章时,检查一些示例 S-Function 可能会有所帮助。示例代码存储在 MATLAB 根文件夹下的以下文件夹中。
MATLAB 代码 |
|
C、C++ 和 Fortran 代码 |
|
2 级 MATLAB S-Function 示例
文件夹(打开)包含许多 2 级 MATLAB S-Function。考虑先查看这些文件。有关 2 级 MATLAB S-function 的更多信息,请参阅 编写 2 级 MATLAB S-Function。matlabroot/toolbox/simulink/sfuntemplates
| 文件名 | 模型名称 | 描述 |
|---|---|---|
msfcn_dsc.m | msfcndemo_sfundsc1 | 实现具有继承采样时间的 S-Function。 |
msfcn_limintm.m | msfcndemo_limintm | 实现一个连续有限积分器,其中输出受下限和上限的限制,并包括初始条件。 |
msfcn_multirate.m | msfcndemo_multirate | 实施多速率系统。 |
msfcn_times_two.m | msfcndemo_timestwo | 实现一个使其输入加倍的 S-Function。 |
msfcn_unit_delay.m | msfcndemo_sfundsc2 | 实现单位延迟。 |
msfcn_varpulse.m | msfcndemo_varpulse | 通过调用 2 级 MATLAB S-Function 中的 set_param 函数来实现可变脉冲宽度发生器。还演示了如何使用自定义设置和获取模块操作点的方法。 |
msfcn_vs.m | msfcndemo_vsfunc | 实现一个可变采样时间模块,其中第一个输入延迟由第二个输入决定的时间量。 |
C S-Function 示例
文件夹(打开)包含 C MEX S-Function 的示例,其中许多都有 MATLAB S-Function 对应项。下表列出了 C MEX S-Function。有关 C S-Function 的更多信息,请参阅 C/C++ S-Function 基础知识 和 Build S-Functions Automatically Using S-Function Builder。matlabroot/toolbox/simulink/sfuntemplates/src
Fortran S-Function 示例
下表列出了 文件夹(打开)中可用的示例 Fortran® S-Function。有关 Fortran S-Function的更多信息,请参阅 Create Level-2 Fortran S-Functions。matlabroot/toolbox/simulink/sfuntemplates/src
| 文件名 | 模型名称 | 描述 |
|---|---|---|
sfun_atmos.csfun_atmos_sub.F | sfcndemo_atmos | 使用 Fortran 子程序计算 1976 年标准大气至 86 公里。 |
C++ S-Function 示例
下表列出了 文件夹(打开)中可用的示例 C++ S-Function。有关 C++ S-Function 的更多信息,请参阅 C/C++ S-Function 基础知识 和 Build S-Functions Automatically Using S-Function Builder。matlabroot/toolbox/simulink/sfuntemplates/src
| 文件名 | 模型名称 | 描述 |
|---|---|---|
sfun_counter_cpp.cpp | sfcndemo_counter_cpp | 将 C++ 对象存储在指针向量 PWork 中。 |
sfbuilder_permute.cpp | sfbuilder_permutation | 通过使用 Start 和 Terminate 调用外部 C++ 类来实现排列。 |
sfbuilder_linfilt.cpp | sfbuilder_upsampling | 使用 C++ STL 算法实现线性滤波,对符号波进行上采样。 |
在工程中组织 S-Function
以下示例显示如何将 S-Function 工件安排到工程中。这是使用 Blockset Designer 功能实现的。有关 Blockset Designer 的更多信息,请参阅 Create a Blockset Project。
| 文件名 | 描述 |
|---|---|
slexBlocksetDesignerExample | 使用 Blockset Designer 将 S-Function 工件组织到单个工程中。 |
另请参阅
Level-2 MATLAB S-Function | S-Function Builder | S-Function | MATLAB Function