title:MATLAB | 如何写一个简单GUI程序?

tags:MATLAB;编程;科研

首先得说明一下,这是个很简单的MATLAB  GUI编程,相当于入门级吧,不过不会讲的很繁琐,因为是基于本专栏主题来讲的,所以就是为了科研办公工作的。

分成以下四个部分来讲(可以根据自己的需求选择跳过):

什么是MATLAB GUI编程?

MATLAB GUI编程的组成部分。

一个简单GUI程序。

如何定义自己专用的GUI程序。

分享一堆MATLAB GUI编程教程资料。

1. 什么是MATLAB GUI编程?

简单说,GUI代表graphics user interface 一般翻译为图形用户接口或图形用户界面。为了实现图形操作界面的编程都可以叫做GUI编程。比如你写了个图形界面操作的计算器,其实这就得用到GUI编程。

所以其实不止MATLAB有GUI编程,很多其他语言也是可以,只要是支持图形界面都可以。而MATLAB里面只是提供了比较方便的接口,使得这件事编的很容易。尤其是对广大并不是很擅长写程序的理工科学子(相对于程序员来说)。

2. MATLAB GUI编程的组成部分。

这里我不是想说GUI编程所包含的内容,因为如果那么讲的话,所有包含算法程序的东西都可以在这里面说。我只简单说一下在MATLAB里面实现一个简单GUI程序的必须部分。

其实要说就是两大部分:

第一部分就是图形件中组成元素的定义,这里包括你需要的文字、图形、菜单、控件等等。

这部分在MATLAB里面操作十分方便,按照下图点击就可以直接创建一个空白的GUI程序:

建完之后如下图,会发现左边有很多部件,有时间的朋友可以都用鼠标点了看看具体的功能,这里我们待会只会用到几个小部件就OK了。

每个部件都是可以自由定义编辑的,比如你添加一个可编辑文本部件,然后双击进去,就可以编辑文本、字体、颜色等等各种属性。

第二部分就是脚本中各种函数的操作,以及你自己需要实现的功能的程序。

每个GUI的程序都对应操作它的一个脚本,而在脚本的开头有一堆函数声明,或者内置函数之类的,还有一堆注释。如下图:

可以理解为每次,MATLAB调用这个GUI程序都是先调用上图部分的函数,然后上图里面的函数再依次调用你自己定义的函数。而上图程序段里面的函数定义如下:

到这里都是不用你自己动手写的部分,因为这些程序段在你选择创建空白GUI程序的时候就已经给你建好了。接下来的才是你需要写的部分。比如我们刚刚创建了一个可编辑文本的部件,那这里就有关于这个部件的创建函数和回调函数。

这里包括你在GUI界面里面自己编辑的那些部件的创建函数,回调函数等。这里其实可以很复杂,不过我们待会以一个简单的例子来说明。

3. 一个简单GUI程序。

接下来我以自己需要用的一个简单GUI程序为例子来说明如何简单创建一个MATLAB的GUI程序。

3.1 先要清楚自己的需求,我的目的就是为了做一个简单的专用计算器,为了算自己实验经常用的参数。就是输入几个量,然后点击之后自动能得出需要的结果。大概就是如下图所示:

可以看出来里面有六个输入量,然后点击calculate按钮之后,可以出来四个输出量,另外为了方便,还加入了一个清零的按钮,点击之后可以将所有的值都清零。

所以基本需求就出来了:一共10个可编辑文本框,2个按钮,其中点击1个按钮,可以实现从6个文本框调用值,然后通过自己定义的算式,计算出来另外4个文本框的输出值,并且写入到另外4个文本框里。此外,还有1个按钮,点击之后将所有的文本框的值都清零。

3.2 先在GUI定义的fig图里将自己需要的部件编辑好,然后点击保存。

这部分就不细讲了,里面的细节大家可以自己试的。不动的文本,比如就是那写名称和单位,直接就是简单文本就行了,而可编辑文本框,点击生成之后可以双击在每个部件相应的菜单里面自己定义。比如那个开关比:后面的文本框,双击之后的界面如下:

这里面需要编辑的其实也就那几个部分。这里我设置的初始值是点击Calculate!类型是string,但是后续计算的时候肯定是要转换的。

3.3 接下来就是回到GUI对应的脚本部分,编写自定义的函数了。

这里需要了解几个概念:回调函数(Callback),获取输入函数(get()),设定输出函数(set())

其实回调函数很好理解, 就是你对这个部件做出了一个动作,然后对你这个动作做出响应的函数,比如对button来说,那就是你每次按这个按钮,它都会调用并执行这个函数,这点其实跟JavaScript里面也是一样的。get()函数和set()函数顾名思义就是获取和设置当前部件的值,对文本框来说那就是文本框内的文本。

比如我获取6个文本框的输入,那就是如下代码:

相应的经过计算后,设置4个文本框的输出:

这样整个都设置完了,就可以运行脚本了,会出来如下fig界面:

最后附上我GUI程序的完整代码:(由于太长影响阅读,我直接放.m文件了,获取方式在文末,关注公众号yetwanng并回复关键字:m文件  ,自动获取)

4. 如何定义自己专用的GUI程序。

另外还想啰嗦一下如何定义自己专用的GUI程序。

其实,写一个GUI程序入门是很简单的,本文涉及的就是一个很简单的小程序,但是其实GUI可以实现很复杂的功能,想想手机电脑的软件,其实不就是一个很综合,很复杂的GUI操作程序吗?

我们首先要学会分析自己的需求,并且把需求能分解清楚,然后一步步的去实现这些需求。

遇到不懂的,就去查查资料或者google一下,等这些都弄明白了,其实写代码就简单了。

最后就是调试了,有时候会出现一些莫名其妙的错误,其实还是一些细枝末节的东西我们没有搞清楚,比如我这个小程序,我最开始的时候就不知道在计算的时候需要把从文本框的值给进行一下str2double的转换,就出现错误了。

总之,多试试,多搜索,总能解决问题的。

5. MATLAB GUI编程资料分享。

这里放点福利,就是一些GUI编程的资料。因为直接放链接会被和谐,所以放在公众号了。。。

获取方式:

自动获取