使用GUIDE做GUI的最大也是唯一的优点便是直观、低门槛,代价却是沉重的——对于一个大型的界面系统,后期如要修改,将会是天大的工作量。
GUIDE的门槛确实很低,上手很快,但是同样,它的上限也很低。对于一个有点基础和追求的同学,我都不建议学习GUIDE制作Matlab GUI。好的习惯要从一开始培养,不要给自己设限。
在这篇回答里,我将以一个例子分享我做GUI的一个套路。文末更新了界面代码文件,有爱自取。
在一个界面系统下,每一个.m脚本文件对应一个界面。我们以上图中极简风格的【线性拟合】的代码讲解基本构成:
在这一环节,主要将要设置的控件按照区域划分成不同的数组,之所以按照区域划分,主要标准是在设置位置的时候有规律可循(比如x/y相同),有规律,就可以用循环。
以上就是一个界面的基本设置,而对于回调函数,细心的同学应该看到了,我在【4】中设置了两行Text_CallBack和Fun_CallBack,对应的就是功能键的名字和相应回调函数的名字。然后回调函数,直接就在Input0.m,calculate.m里面写。这就是大家很熟悉的基本的Matlab功能编写了。
最后,提醒一下:除了主界面,其他所有脚本(包括子界面和功能函数),都不要在开头初始化。
我曾不止一次地跟我的同学朋友强调过这样一个观点:网上的信息鱼龙混杂,要学会分辨。很多教程只是一些新手刚刚学会便迫不及待想要分享喜悦而带来的不成熟的经验,或许并没有错,但是会走很多弯路,也会限制你的视野。
我想,当你熟练掌握GUIDE的时候,大抵也没有动力去学习用脚本写GUI了。这不能不说是一种遗憾吧。
我在15年由于参加的项目的需要开始有效学习GUI,我很庆幸我的GUI入门是一本叫做《Matlab GUI学习手记》的相对专业的书籍,作者以高屋建瓴的方式带我一睹了Matlab GUI的大概,这让我一开始就接触了用脚本控制界面的方法,从而少走了很多弯路。
马上要毕业了,曾经也花费了大量的功夫和时间去研究这个GUI,在知乎,微信公众号,CSDN等等,这里分享一下自己的一点心得,另外,这一个网站是个学习matlab的好地方
当你真正学会的时候,其实就很简单了,我是因为导师的要求,需要将我所有的学习课题资料统统汇总到一个界面里边,GUI是一个非常好的东西,点一下,这个程序便可以运行,我是学电动汽车的锂离子电池BMS的一小块内容,状态预测这方面的东西,这个是我设计的OCV-SOC拟合的一个GUI,
1.MATLAB自带的工具箱,”cftool“也是能很好的做这个事情的,言归正传,接下来讲讲如何去设计这个GUI。
MATLAB界面输入,”guide“,然后创建一个GUI,这里有两部分,一个是figure一个是code文件,code是一堆代码,那么我们很难通过代码去控制界面,老手是能做到的,我们新手小白先简单的去做这个事情,就是在figure中去设计,这里说一下GUI中最重要的一个东西,Tag
你要你的程序所出的图,表,如何对应到固定的axes和列表呢,就是这一个标签,打个比方,我要把东西给小明,但你不能给小红,所以你要把程序写入这个叫”小明“的组件中去,这样就对应起来了,GUI说到底就是一个程序的启动器。
程序运行后,这个单击,就是一个程序的启动。在figure界面,双击,就是这一个按钮的编辑了,比如颜色,背景色,线宽等等,也可以更Tag,更改标签,换一个我们应该的名字。然后我们应该做的就是去关联一段程序
好嘞,以上的功能适合大部分简单的GUI设计了,其他的锦上添花的东西,诸君自行琢磨,比如加个开机动画,加个进度条,数据保存到EXCEL,另外多一嘴,MATLAB能轻松实现与office的互通,我可以用代码将excel的数据导入matlab
打开MATLAB,然后再 主页——新建——图形用户界面,选择一个空的GUI界面即可
设置按钮属性,保存,在保存的*.m文件中写入执行的代码,即完成了按钮的callback
如果是Matlab GUI设计的初学者,强烈建议阅读《MATLAB GUI设计学习手记(第三版)》。