您的位置:首页 > 编程语言 > MATLAB

MATLAB GUI ,1,GUIDE 实例_简单的作图

2013-08-22 23:55 330 查看
一、概要

     MATLAB GUI是MATLAB用户图形接口,主要完成MATLAB图形界面程序。其实MATLAB的界面在运行效率上必定是不如其他语言,但是如果你想很方便的结合MATLAB中各种好用的函数或者工具箱,那就用MATLAB GUI吧。MATLAB GUI使用方式与MFC十分类似,而且对于熟悉MATLAB的人来所,上手非常容易,MATLAB还有命令窗口,使得在调试过程中也占有很大的优势。本文将完成一个作图程序,点击按钮会按顺序在坐标轴中作图。

 

二、GUIDE界面

     在命令窗口键入guide,回车即可进入MATLAB GUIDE启动界面,



     直接确定即可进入GUIDE主界面,



        此时是一个空的界面,中间就是界面窗口了,左边是控件栏,包含了SELECT,PUSH BUTTON,RADIO BUTTON,EDIT TEXT,POP-UP MENU,TOGGLE BUTTON,AXES,BUTTON GROUP,SLIDER,CHECK BOX,STATIC TEXT,LISTBOX,TABLE,PANEL,ACTIVEX CONTROL。上面是菜单栏(不介绍了),还有工具栏,工具栏中比较重要的就是MENU EDITOR(菜单编辑器),TOOLBAR EDITOR(工具栏编辑器),EDITOR(文件编辑器),ROPERTY
INSPECTOR(属性查看器,用来查看界面中各控件属性),OBJECT BROWSER(对象查看器,查看整个界面的对象层次)。

        这里比较抢眼的莫过于ACTIVEX CONTROL了,将此控件拖拽到界面窗口中,就会出现ACTIVEX控件的选择窗口,



          左边控件列表中会显示MATLAB在你的电脑中检测到的ACTIVEX控件,而右边就是缩略图,右下角有选中控件的路径。选好控件确定后就将控件加入到你的界面中了。关于MATLAB的ACTIVEX CONTROL不是本文重点,略过了,有需要的查找一下MATLAB ACTIVEX控件相关资料吧(这功能貌似很牛的样子)。

 

 三、  文件

        将界面保存后,保存的文件有两个,XX.FIG和XX.M。.FIG文件就是GUIDE的界面文件了,而.M文件是回调函数存在的文件了。

        在界面窗口的鼠标右键菜单中选择VIEW CALLBACKS中的回调函数即可进入EDITOR编辑该回调函数了。

 

四、 参数传递

       在本人的另一篇文章《关于MATLAB的GUI一些实用小技巧》中有介绍到我最推荐的方式,采用setappdata和getappdata来进行参数的传递。基本语法如下,

        setappdata(handle, 'varname', value)   

        value = getappdata(handle, 'varname')

 

五、SET和GET函数

       SET和GET函数在使用控件时最重要的函数,分别是设置和获取控件属性值的函数。语法如下,

       set(handle, 'property', value)

       value = get(handle, 'property')

 

六、控件

       后面的例程中仅使用到这两个控件,PUSH BUTTON按钮和AXES坐标轴。

        拖拽按钮和坐标轴空间至界面窗口如图所示,



         双击PUSH BUTTON即可看到按钮的属性,如图所示,



         tag是句柄标识,GUIDE自动创建的句柄在程序内部以此作为标识。例如此处,引用按钮句柄的方式为handles.pushbutton2。而string是显示在按钮上的字符串。坐标轴的tag为axes2。

         控件的使用非常类似,主要是设置不同的属性以及回调函数的使用。在后面的实例中将使用的是在按钮的回调函数中对按钮的string属性值的修改,以及在axes中作图。

 

七、回调函数

        右击按钮,VIEW CALLBACKS,BUTTONDOWNFCN,MATLAB会自动跳至

        function pushbutton2_ButtonDownFcn(hObject, eventdata, handles)

        这就是按钮的鼠标左键点击事件的回调函数,参数hObject是当前句柄,这里就是按钮的句柄,与handles.pushbutton2一样。eventdata是MATLAB预留参数,供后续扩展用,现在没用,略过,handles是句柄结构体,包含了整个界面中所有控件的句柄。

        在回调函数下添加如下代码,

       order = getappdata(0,'guitest');       % 获取order,标识作图的顺序

       if isempty(order)

           order = 0;

       else

           order = mod(order+1,3);

       end

       setappdata(0,'guitest',order)           %保存order

       axes(handles.axes2)                        %指定当前坐标轴为界面中的坐标轴

       switch order                                        %根据order绘制图形

           case 0

               set(hObject,'string','second')   %改变按钮显示字符串

               plot(1:10)                                     %绘图

           case 1

               set(hObject,'string','third')

               plot(sin(1:10))

           case 2

               set(hObject,'string','first')

               plot(rand(10,1))

       end

        这里在根句柄中保存了数据,在退出程序时需要将保存数据删除,在界面的关闭回调函数中加入代码,

        function figure1_CloseRequestFcn(hObject, eventdata, handles)

        order = getappdata(0,'guitest');

        if ~isempty(order)                     

            rmappdata(0,'guitest')                  %删除数据

        end

       完成数据的删除。

 

八、blah blah

        到这里就结束了,可以将.fig和.m文件保存运行,就可以看到一个简单的作图程序了。本文只是给出了一个极其简单的例子,但是GUI的使用,大部分过程均于此类似(当然除了需要做的复杂运算啥的,自己加吧)。

程序运行,



作图一次,



作图2次,



作图3次,



 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  matlab GUI