首页 最新 热门 推荐

  • 首页
  • 最新
  • 热门
  • 推荐

Matlab编程技巧:自定义Simulink菜单

  • 23-09-22 00:44
  • 4089
  • 13883
blog.csdn.net

本文研究如何在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

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22

3 模型验证

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

>> sl_refresh_customizations
  • 1

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

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

4 其他注意点

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

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

5 总结

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

>>返回个人博客总目录

注:本文转载自blog.csdn.net的chhttty的文章"https://blog.csdn.net/u013288925/article/details/110717931"。版权归原作者所有,此博客不拥有其著作权,亦不承担相应法律责任。如有侵权,请联系我们删除。
复制链接
复制链接
相关推荐
发表评论
登录后才能发表评论和回复 注册

/ 登录

评论记录:

未查询到任何数据!
回复评论:

分类栏目

后端 (14832) 前端 (14280) 移动开发 (3760) 编程语言 (3851) Java (3904) Python (3298) 人工智能 (10119) AIGC (2810) 大数据 (3499) 数据库 (3945) 数据结构与算法 (3757) 音视频 (2669) 云原生 (3145) 云平台 (2965) 前沿技术 (2993) 开源 (2160) 小程序 (2860) 运维 (2533) 服务器 (2698) 操作系统 (2325) 硬件开发 (2492) 嵌入式 (2955) 微软技术 (2769) 软件工程 (2056) 测试 (2865) 网络空间安全 (2948) 网络与通信 (2797) 用户体验设计 (2592) 学习和成长 (2593) 搜索 (2744) 开发工具 (7108) 游戏 (2829) HarmonyOS (2935) 区块链 (2782) 数学 (3112) 3C硬件 (2759) 资讯 (2909) Android (4709) iOS (1850) 代码人生 (3043) 阅读 (2841)

热门文章

101
推荐
关于我们 隐私政策 免责声明 联系我们
Copyright © 2020-2024 蚁人论坛 (iYenn.com) All Rights Reserved.
Scroll to Top