Simulink代码生成: 调用Matlab函数 |
您所在的位置:网站首页 › simulink的fcn模块在哪 › Simulink代码生成: 调用Matlab函数 |
本文研究Simulink模型中调用Matlab函数的方法。 文章目录 1 Matlab Function模块2 建模与代码生成3 Matlab Function中的数据管理3.1 关联Signal对象3.2 建立函数内的参数 4 Matlab Function生成代码的限制5 Matlab Function的使用心得5.1 Matlab Function中打断点5.2 通过脚本输出数据 6 总结 1 Matlab Function模块在Simulink中建模的时候,有时会发现自己想要的功能很难通过Simulink中常规的模块和子系统实现,但是通过Matlab函数却可以很容易地实现。 根据博主工作经验,认为在以下情况比较适合用Matlab而不是Simulink实现: for循环或while循环较多结构体定义较复杂,例如结构体嵌套结构体想要调用Matlab的某个工具箱函数习惯写代码而不是搭模型针对以上问题,可以在Simulink中使用Matlab Function模块,然后在模块内写Matlab代码。从而实现了通过Simulink模型调用Matlab函数。 本章节通过勾股定理的例子,演示Matlab Function模块的建模。 1)打开Simulink,拖出一个Matlab Function模块。双击模块进入,可以看到里面已经有一个名为fcn的函数定义。 3)点击右上角的Edit Data,可以编辑输入输出的属性。这里把输入输出的数据类型都改为single。相当于Simulink子系统中的Inport和Outport的类型一样。 在Edit Data中,可以配置输入输出关联数据字典中的Signal对象。 1)在Ports and Data Manager中勾选Data must resolve to signal object。 1)在Ports and Data Manager中中点击Add–>Data新建一个参数。 Matlab Function生成代码的限制很多,譬如不支持动态内存分配、不支持元胞数组等。 另外,也有很多matlab函数和工具包也不能生成代码,具体可以参照Matlab Function中右上角的帮助文件。 博主比较擅长写Matlab脚本,所以对Matlab Function的使用还是很顺手的。下面是博主工作中的一些心得体会,可以帮助自己方便地使用这个模块。 5.1 Matlab Function中打断点仿真用的模型中如果用到了Matlab Function模块,就可以在里面打断点调试。譬如下面的模块,博主在for循环内打了个断点。 另外,也可以先仿真到某一个时间点,再打断点进入Matlab Function。这样就可以看到该时刻Matlab Function内部的情况了。 5.2 通过脚本输出数据在Matlab Function中也可以写一些和生成代码无关的脚本,用于输出数据或是画图。例如下图中,在计算完y的数值后,通过fopen函数把数值写道文件里面。 Matlab Function模块的使用可以让Simulink集成Matlab函数,需要根据自身项目特点灵活使用是用Matlab还是Simulink模块编写控制算法。 >>返回个人博客总目录 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |