用 MATLAB Function 模块在 Simulink 中实现 MATLAB 函数

MATLAB Function 模块使您能够使用 MATLAB 语言在 Simulink 模型中定义自定义函数。MATLAB Function 模块支持从 Simulink Coder 和 Embedded Coder生成 C/C++ 代码。

在以下情况下使用这些模块:

  • 您有现有 MATLAB 函数可用于对自定义功能进行建模,或您可以轻松创建这样的函数。
  • 您的模型需要在 Simulink 图形语言中没有或无法捕获的自定义功能。
  • 您发现使用 MATLAB 函数对自定义功能建模比通过使用 Simulink 模块图建模更容易。
  • 要建模的自定义功能不包括连续或离散的动态状态。要对动态状态建模,请使用 S-Function。

用 MATLAB Function 模块计算均值和标准差

此示例从包含 MATLAB Function 模块的模型开始,并指导您如何自定义该模块来计算值向量的均值和标准差。

创建模型

创建模型 call_stats_block1 包括一个空的 MATLAB Function 模块和示例所需的模块。

对 MATLAB Function 模块进行编程

为模块编程,以计算值向量的均值和标准差。

  1. 双击 MATLAB Function 模块以打开 MATLAB Function 模块编辑器MATLAB Function 模块编辑器中出现一个默认函数,其中有两个变量:一个输入参数和一个输出参数。

  1. 通过编辑函数声明语句定义函数输入和输出:

此语句定义一个名为 stats 的函数,该函数包含三个变量。该语句定义一个输入参数 vals 以及两个输出参数 mean 和 stdev。

  1. 在函数声明语句后的新行中,添加以下代码:

  1. 退出模块。该模块会更新端口名称。函数输出 mean 和 stdev 对应于模块输出端口 mean 和 stdev,函数输入 vals 对应于模块输入端口 vals
  2. 完成与 MATLAB Function 模块的连接,如下图所示。

  1. 将模型另存为 call_stats_block2。

检查 MATLAB Function 模块变量的属性

您可以检查和管理 MATLAB Function 模块中变量的属性。在此示例中,验证输入参数 vals 是否继承其类型和大小属性:

  1. 双击 MATLAB Function 模块。
  2. 打开符号窗格和属性检查器。在函数选项卡中,点击编辑数据

符号窗格在名称列中显示变量名称。类型列确定函数参数端口分配以及它在函数声明语句中出现的位置。在此示例中,vals 分配给输入端口。mean 和 stdev 分配给输出端口。如果您更改任一变量的类型条目,函数声明语句也会随之更改。

  1. 检查 vals 的属性。在符号窗格中,点击 vals 对应的行。属性检查器会更新以显示 vals 的属性。作用域属性与类型列匹配。

只有部分属性可以继承:大小单位复/实性类型。变量表示它们在以下情况下继承这些属性:大小为 -1、单位为 inherit、复/实性为“继承”以及类型为 “Inherit:Same as Simulink”,即可指定继承。在此示例中,vals 对大小类型使用这些值。

通过在符号窗格中选择其他 MATLAB Function 模块变量来检查它们。

默认情况下,新定义的输入和输出变量继承其大小、单位、复/实性和类型。如果希望变量使用特定的大小、单位或类型,可以显式指定这些属性。例如,在大小属性中输入 [2 3] 以将变量指定为 2×3 矩阵。

编译函数

在 MATLAB Function 模块中输入代码后,可以检查代码中是否有错误并编译函数。

当您编译模型时,MATLAB 使用编译器来编译您的 MATLAB function 模块代码。

在 Simulink 中,点击运行以仿真模型。软件在编译模型时会编译 MATLAB Function 模块,并将数据从函数输出到两个 Display 模块。

为代码生成准备模块

要从包含 MATLAB Function 模块的模型中生成独立的 C/C++ 代码,请使用 Simulink Coder 或 Embedded Coder。

为 MATLAB Function 模块生成代码

要生成代码,请执行以下操作:

  1. 在 call_stats_block2 模型中,双击 MATLAB Function 模块。
  2. 打开 Simulink Coder 或 Embedded Coder。
  3. 在 C 代码选项卡上,选择编译以编译示例模型。

如果出现与“变步长”求解器相关的错误,请打开“配置参数”窗口,然后点击左窗格中的求解器。在求解器选择下,将类型设置为“定步长”,并再次生成代码。

相关推荐

  1. MATLABSimulink.defaultModelTemplate

    2024-07-12 22:22:03       37 阅读
  2. MATLABSimulink.exportToTemplate

    2024-07-12 22:22:03       21 阅读
  3. MATLABSimulink.SimulationOutput

    2024-07-12 22:22:03       20 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-12 22:22:03       52 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-12 22:22:03       54 阅读
  3. 在Django里面运行非项目文件

    2024-07-12 22:22:03       45 阅读
  4. Python语言-面向对象

    2024-07-12 22:22:03       55 阅读

热门阅读

  1. 【25届秋招备战C++】算法篇-排序算法合集

    2024-07-12 22:22:03       14 阅读
  2. 国道省道乡道见闻

    2024-07-12 22:22:03       18 阅读
  3. 解锁深度学习黑箱:注意力机制的神秘力量

    2024-07-12 22:22:03       20 阅读
  4. LLM生成nvidia-h100-tensor-core-hopper-whitepaper.pdf摘要

    2024-07-12 22:22:03       17 阅读
  5. 介绍一下Feed流

    2024-07-12 22:22:03       17 阅读
  6. Influxdb v2.x的基本概念

    2024-07-12 22:22:03       17 阅读
  7. P3378 【模板】堆 题解

    2024-07-12 22:22:03       18 阅读
  8. Spring源码二十四:Bean流程探讨

    2024-07-12 22:22:03       18 阅读
  9. 信息收集简介

    2024-07-12 22:22:03       17 阅读
  10. 有哪些好用的项目管理工具?

    2024-07-12 22:22:03       19 阅读
  11. 拦截HTTP的多种方式

    2024-07-12 22:22:03       18 阅读
  12. 如何使用这个XMLHttpRequest?

    2024-07-12 22:22:03       18 阅读