批量修改的后台代码_图形用户界面实现批量修改参数名称

上一篇文章简要介绍了批量修改参数名称的方法,但是每一次批量修改不同的模块参数名称时,都需要手动修改代码。今天我们用Matlab自带的GUI功能来完成批量修改的任务。

GUI是什么?Graphical User Interface,图形用户界面,即已图形界面的方式帮助我们实现与计算机的交互,与直接编写代码、执行代码的方式比较,更方便普通人去使用。可以这样说,我们在电脑上安装的大部分软件,都带有GUI属性,方便非专业人员更好的使用软件。GUI只是帮助我们更舒服地使用代码,代码一直存在。

我们以上一篇文章中介绍的批量修改参数名称方法为例,来设计一个GUI界面,方便我们使用这些代码。

静态UI设计

UI设计属于静态设计,就是把图形界面设计成自己喜欢的样子。

在Matlab命令窗口输入guide,选择新建,即可打开GUI设计界面,如下图。

0c662af731dfd69a65aaf895ef77a036.png

为实现批量修改模块参数名称需要进行以下操作:

1)1个Panel:搭建一个面板,作为参数输入界面的外围框图,双击该图形,修改其Title为“参数替换”,并修改字体、边框线性等属性(这些都比较随意,修改至自己喜欢的样子即可)。

2)2个Edit Text:搭建两个输入编辑窗口,作为后面进行参数修改的输入模块,双击这两个图形,删除其String中的定义“Edit Text”,其他属性也可以按需修改。

3)2个Static Text:搭建两个静态窗口,作为上面两个Edit Text的定义,上级这两个图形,修改其String为“替换前参数名”、“替换后参数名”, 其他属性也可以按需修改。

4)1个Push Button:搭建一个按钮,作为确认动作的窗口,双击图形,修改其String为“确定”。

5)调整上述图形的大小、相对位置等,让整个界面尽量美观。

操作完以上步骤后,可得到下面的图形:

9edac8caa30130f115d5c1c38ad4db5c.png

点击保存,修改fig名称为“ParameterReplace”,就会同时保存下两个文件:.fig和.m。

.fig定义了刚刚设计的静态图形界面,.m文件定义了静态图形界面中各组件的回调函数,通过编辑这个.m文件可以帮助我们实现GUI界面的动态控制。

回调函数编写

图形用户界面添加交互组件后,此时运行出的GUI界面是静态的,用鼠标对界面上的组件和菜单进行操作时,不会产生任何响应。这时就需要编写各图形对象的回调函数,当用户用鼠标单击GUI界面上的某个组件或菜单时,使静态的GUI界面产生动态的变化。

回调函数的本质就是响应用户的操作,执行图形界面背后的代码,完成程序的正常执行。

为实现批量修改模块参数名称的任务,我们需要进行以下操作(更多操作指引请关注公众号视频内容):

1)右键“确定”按钮,选择菜单“View Callbacks”中的子菜单“CallBack”,就可以打开该Push Button按钮背后的回调函数。

2)把上一篇文章中的批量修改模块参数名称代码直接放在该“确定”按钮的回调函数下,稍作修改即可,具体代码如下。

function pushbutton1_Callback(hObject, eventdata, handles)old=get(handles.edit1,'String');new=get(handles.edit2,'String');constant=find_system(gcb,'BlockType','Constant','Value',old);for i=1:length(constant);set_param(constant{i},'Value',new);endgain=find_system(gcb,'BlockType','Gain','Gain',old);for i=1:length(gain);set_param(gain{i},'Gain',new);end

用get函数读取编辑窗口的替换前参数名称和替换后参数名称,用gcb获取当前模型的路径名。

理论上所有类型模块的参数名都需要进行上图所示的for循环,搜寻并替换,本文只做了Constant、Gain两种模块的处理。

GUI功能测试

以上完成了GUI静态图形和回调函数的设计,得到了以下两个文件。

2a9fb81e41c02a77865afab9c6338c64.png

下面进行GUI测试,具体操作步骤:

1)打开需要替换参数的模型newModel.slx,并用鼠标左键单击选中Subsystem;

1c5abb9f9e46ac4d1eec4623c2c7efe3.png

2)打开.m文件,点击运行,弹出以下用户界面;

e2a976057a060285cd1e5ed2524590b3.png

3)替换前参数名中输入“ConstPara1”,替换后参数名中输入“NewConstPara1”,点击确定,模型中的参数“ConstPara1”被成功替换为“NewConstPara1”。

a9b662b5e5ec903eff1f37a3d6eeed6f.png

测试通过。

以上用GUI界面成功实现了批量修改Simulink模块参数名称,相比手改代码方式,更友好更便捷。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
通过GUI来控制Simulink进行系统仿真-GUI控制钟摆动画.rar 通过GUI来控制Simulink进行系统仿真,仿真的对象是动态地钟摆系统.别看题目是GUI和Simulink,其实最重要的中心内容在于S-function.Math大哥说过,S-function的本质就是系统状态的更新,这话总结了一切,系统的更新也就是采样点的刷新,计算当前采样点的全部输出或者包含其微分积分信息,然后到下一个时间点,再刷新.而区分其工作阶段的标志flag的值分别对应各个工作状态:初始化,连续状态微分更新,离散状态更新,输出更新,采样时刻更新,仿真结束这六种状态.其调用格式就不详细介绍了,大家自己调用模版文件出来瞧瞧就很明白了(edit sfintempl.m或者open sfintempl.m或者type sfintempl.m).   大概的原理就讲这么多,下面进入到我的作品,<>.在这个作品中,我使用了两个S-function,一个是来描述钟摆本身的运动学特性,一个是模仿硬件(单片机的外部中断)来控制整个仿真的进行与终止.制作过程比较麻烦,程序大概四五百行,我大致说说核心的东西就应付过去吧.核心:S-function早软件中实现硬件支持的中断功能,通过刷新系统状态和检测全局变量stopf来确定是继续执行仿真还是终止动画进行.它的每次更新都把stopf变为0,但控制器的按钮按下把stopf变成1,在S-function每次计算输出时会对stopf检测,若为1,那么动画会静止.先给大家看看控制版面,带有仿真时间的输入,如果想保持仿真,那么可以输入inf. 1.jpg 2.jpg 打开模型按钮可以打开.mdl的单摆系统结构图,下面的就是检测停止状态stopf的S-function结构图,需要与系统本身放在一个.mdl文件中,否则只程序的编写是不足够的. 摆过去之后还回循环往复: 3.jpg 4.jpg 按照这种语法介绍有没有什么理解上的误会,希望大家留下宝贵意见,帮助我提高,感谢拉! GUI控制钟摆动画.rar

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值