作者简介柚籽,MATLAB中文论坛(http://www.) 超级版主,MATLAB/Simulink高级应用工程师,同济大学机械电子工程专业硕士学位,专注于物理系统的建模仿真,在论坛回答问题超过1700个,分享大量Simulink应用学习资源。 我们写 C 代码的时候,为了主程序结构清晰,通常会把具有独立功能的代码变成子函数的形式。类似的,为了 Simulink 模型结构清晰,我们在模型里也经常会用把具一片实现某种功能的模块变成子系统的形式。 那么,如果我希望这些 Simulink 子系统在自动代码生成时,也能真的生成单独的子函数,该如何配置呢? 点击末尾的 “阅读原文” 下载本文的案例模型
1. 模型 

2. 设置 这是因为对该模块的属性做了设置,如下图。 首先右键点击模型,打开 Block Parameters 界面,首先要在 Main 的页面将子系统勾选为Atomic Subsystem。只不过在这个案例模型里,由于 func 是触发子系统,默认就是 Atomic 的。 然后,点开出现的 Code Generation 页面,将 Function packaging 配置为 Nonresusable function,主函数调用它时通过全局变量来传递数据(总之不选择 Inline 和 Auto)。



如果希望某个子系统的 C 代码单独生成一个子函数,那么: 把子系统配置为元胞子系统(Atomic Subsystem); 设置 Code Generation 属性为 Reusable 或者 NonReusable。
另外,不仅可以将子系统的代码放在单独的子函数里,还可以配置放在单独的文件(在配置菜单里指定文件名即可)里。
|