柚籽,MATLAB中文论坛(http://www.ilovematlab.cn) 超级版主,MATLAB/Simulink高级应用工程师,同济大学机械电子工程专业硕士学位,专注于物理系统的建模仿真,在论坛回答问题超过1700个,分享大量Simulink应用学习资源。
上一篇介绍了用 Simulink 框图以及 Stateflow 的形式来表达常用的循环控制语句诸如 for 、while 以及,do while。
其实也就是使用 Simulink 库里相应的模块,以及使用 Stateflow 流程图向导。在这一篇,我们介绍使用 MATLAB Function 的方式。
其实,如果想在 Simulink 里嵌套使用 m 脚本来实现某些复杂的数学运算,用 MATLAB Function 也是一种很方便的途径。
点击末尾的 “阅读原文” 下载本文的案例模型
要得到:
y1 = 0;for(inx = 0; inx <10;>10;>
{
y1 = u1[inx] + y1;
}
或者
while(flag && (num_iter <=>=>
{
flag = func ();
num_iter ++;
}
怎么做:
MATLAB Function 模块可以直接写相应的 m 脚本。
1. 简单模型
直接把循环的脚本写进去就行了:
得到代码:
2. 调用外部函数
当 m 脚本里,如果有些运算需要调用到外部已有的 Simulink 函数时,跟 Stateflow 一样,也可以使用 function call 的形式。如下图,在 MATLAB Function 的数据管理界面上,将 func 设置为 function call 类型:
MATLAB Function 内部运行到 func; 这一句时,触发调用外部的 Trigger 子系统 func 计算输出,从而更新 func_flag 的值:
生成的代码如图,这里做了模型配置把所有代码注释都去掉了:
Simulink 提供了多种建模的方式
没有哪种是最好的,只有合适的
使用 MATLAB Function 模块,可以利用 m 脚本来方便的表达某些复杂的数学计算。
联系客服