我是靠谱客的博主 默默火,最近开发中收集的这篇文章主要介绍Matlab编程技巧:自定义Simulink菜单1 问题引入2 自定义Simulink菜单过程3 模型验证4 其他注意点5 总结,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

本文研究如何在Simulink菜单中嵌入自定义的脚本。博客内容参考了帮助文档:Add Items to Model Editor Menus

文章目录

  • 1 问题引入
  • 2 自定义Simulink菜单过程
    • 2.1 新建注册文件
    • 2.2 项目组的函数
    • 2.3 项目的函数
    • 2.4 功能实现的函数
  • 3 模型验证
  • 4 其他注意点
  • 5 总结

1 问题引入

博主以前的博客分享过很多关于Matlab脚本自动化处理模型的方法。但是运行脚本经常需要切出Simulink模型,然后找到脚本来运行,还是会有一点不方便。

基于这个痛点,博主研究了一下将脚本命令直接在模型的菜单中运行的方法。实际工作中使用下来非常方便。

2 自定义Simulink菜单过程

本章中博主从零开始记录自定义Simulink菜单的过程。

2.1 新建注册文件

sl_customization.m文件是Matlab中专门提供给用户注册自定义功能的,因此,自定义Simulink菜单也需要创建这个文件。

这一步中要新建一个名为sl_customization.m的空白文件,在文件中写入如下函数。
在这里插入图片描述
上图中cm.addCustomMenuFcn()函数是将自定义Simulink菜单的功能注册到整个sl_customization自定义文件中。该函数包含两个参数:

  • Simulink:ContextMenu指的是自定义菜单的位置添加到ContextMenu中,也就是鼠标右键的菜单;
  • @getMyMenuItems是一个回调函数,会返回具体有哪些菜单的项目。

2.2 项目组的函数

在sl_customization.m的后面继续添加项目组的函数,也就是2.1节中的回调函数@getMyMenuItems。
在这里插入图片描述
该函数返回值也是回调函数,是项目函数组成的的单元数组。单元数组中的回调函数可以有多个,对应了定义多个菜单,后面的项目回调函数也要能够一一对应。

2.3 项目的函数

紧接着之后是项目的函数,也就是上一节的回调函数@getItem1。
在这里插入图片描述
这个函数返回的shema中有两个关键信息。label指的是菜单的名称,会显示在右键菜单中。callback是运行自定义菜单后所执行的脚本名,也是一个回调函数。

如果在2.2节中的单元数组返回了多个回调函数,这里也要建立对应的回调函数。

2.4 功能实现的函数

最后建立真正实现功能的函数ModifyBlockColorToRed,其效果是将选中的模块的颜色置为红色。
在这里插入图片描述
首先用set_param函数将当前选中的模块的BackgroundColor属性改为Red。然后用msgbox弹窗显示完成。如果2.2章节的单元数组中有多个项目。功能实现的函数要和2.3章节中的多个回调函数一一对应。

至此,这个简单的脚本就写完了,将其保存。全部代码如下。

function sl_customization(cm)
cm.addCustomMenuFcn('Simulink:ContextMenu', @getMyMenuItems);
end

%% Define the custom menu function.
function schemaFcns = getMyMenuItems(~)
schemaFcns = {@getItem1};
end

%% Define the schema function for first menu item.
function schema = getItem1(~)
schema = sl_action_schema;
schema.label = 'ModifyBlockColorToRed';
schema.callback = @ModifyBlockColorToRed;
end

%% Define the change color function
function ModifyBlockColorToRed(~)
set_param(gcb,'BackgroundColor','Blue');
msgbox('Complete!');
end

3 模型验证

1)将sl_customization.m保存到当前路径,或者Matlab的搜索路径中。然后在模型中运行:

>> sl_refresh_customizations

就可以将第2章的脚本内容注册到Simulink中了。

2)新建一个模型,做一些简单的模块来验证一下效果。
在这里插入图片描述
3)在Gain模块上右键,可以看到菜单的最下面多了一个ModifyBlockColorToRed
在这里插入图片描述
点击ModifyBlockColorToRed后,Gain模块就变成了红色,然后弹出了窗口。
在这里插入图片描述
自定义菜单的功能也就验证完成了。

4 其他注意点

前两章通过简单的例子研究了自定义菜单的方法,但是在实际应用中可以更加灵活多变。

  • 第2章节中的函数可以分成多个文件管理,只要这些文件都在Matlab的搜索路径中就行了;
  • 自定义菜单所处的位置也可以是顶部工具栏,只要修改一下addCustomMenuFcn函数中的参数;
  • 如果是修改模块参数,最好还是弹窗反馈或者在Matlab中打印出改的地方,以免脚本的bug改错了模型;

5 总结

本文研究了自定义Simulink菜单的方法,提高了建模的效率。

>>返回个人博客总目录

最后

以上就是默默火为你收集整理的Matlab编程技巧:自定义Simulink菜单1 问题引入2 自定义Simulink菜单过程3 模型验证4 其他注意点5 总结的全部内容,希望文章能够帮你解决Matlab编程技巧:自定义Simulink菜单1 问题引入2 自定义Simulink菜单过程3 模型验证4 其他注意点5 总结所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(47)

评论列表共有 0 条评论

立即
投稿
返回
顶部