基于matlab的可视化界面制作
更新时间:2024-03-22 07:08:01 阅读量: 综合文库 文档下载
MATLAB可视化设界面计(上)
一个可发布的应用程序通常都需要具备一个友好的图形界面(比如,我们开课时或给学生上课而使用课件时,我们一般就会用到可视化界面)。这样用户不需要知道应用程序究竟是怎样执行各种命令的, 而只需要了解可见界面组件的使用方法用户也不需要知道命令是如何执行, 只要通过与界面交互就可以使指定行为得以正确执行。 MATLAB可视化界面的设计, 一般有两种方法, 一是直接通过编辑M脚本文件产生GUI(这个方法就是我们在前面学习过的如何编写、调用M文件), 二是通过MATLAB图形用户界面开发环境GUIDE(Graphical User Interface Development Environment)来形成相应文件。这里只讲述在GUIDE环境中利用控件实现可视化界面功能, 不探讨直接通过编辑脚本文件实现可视化界面的方法。
MATLAB软件GUIDE为用户提供了一个方便高效的集成环境, 所有GUI支持的用户控件都集成在这个环境中, 并提供界面外观、属性和行为响应方式的设置方法。GUIDE将用户保存设计好的GUI界面保存在一个FIG资源文件中, 同时自动生成包含GUI初始化和组件界面布局控制代码的M文件, 为实现回调函数提供了一个参考框架。
下面以一个具体实例来说明GUIDE的开发使用以下所讲解的关于各控件的使用, 我们以MATLAB7.0版本为调试环境, 如果版本的环境和版本略有不同,但基本思想和方法一致。为了方便大家学习,此处提供二个版本(即文字和视频,文字的即为下面的叙述,视频请点击此处。) 实例要完成的功能如下:
首先运行M文件后,出现一个主画面
当分别点击按钮“螺旋线”、“内摆线”、“圆旋转成圆环”和“退出”命令按钮时,分别出现如下列图示的动态、静态的结果。
螺旋线图
内摆线图
圆动成环图
退出信息图
下面看具体的操作步骤:
1)启动Matlab并进入GUIDE环境:在Command Window下输入“guide”,进入GUIDE环境。出现如下图所示的界面(写到这里,发现文字叙述很繁琐,但还得写,要命)。这里Matlab提供了一个新建空白界面及三个样本界面,它们分别是:GUI with Uicontrols;GUI with Axes and Menu;Modal Question Dialog;当然还有一个标签是用来打开已经编写好的GUI的。一般来说,我们会用Blank GUI,即空白的界面来写自己的东西。进入后,
Matlab就新建了一个fig文件(默认名是untitled.fig),同时得到如下的编辑窗口:
从上图我们可以看出Matlab 的Guide环境可以分为三个部分即菜单栏和工具栏、用户控件集、用户界面编辑窗口。菜单栏,暂时不作介绍,我们主要使用用户控件集(其它软件一般称为工具箱),用户控件集主要有命令按钮(Push Button)、切换按钮(Toggle Button)、单选按钮(Radio Button)、复选框按钮(Checkbox)、编辑框(Edit Button)、静态文本框(Static Button)
、滚动杆(Slider)、列表框(Listbox)、弹出式菜单(Pop-menu)、坐标轴(Axes)等。严格地讲, 坐标轴不能算控件的范畴。用户界面编辑窗口用于对受控的图形窗口进行编辑, 比如添加按钮、静态文本框等。 2)在用户界面编辑窗口添加相应控件(终于可以做具体的事了,这个就简单了,哈哈)
MATLAB可视化界面设计(下)
王林方 发表于 2010-4-2 11:12:00
0
推荐
首先,在用户界面编辑窗口添加4个命令按钮(显示是OK的用个PUSH BUTTON),再如下图所示添加5个静态文本框(Static Text)、5个编辑文本框(Edit Text)和一个坐标系(Axes)
其次,按下表设置每个控件的属性值(具体操作是:右击要设置属性的控件——property inspector 命令——在弹出的属性窗口中找到相应的属性名称——将该属性的值修改成自己需要的值)
控件名 PushButton1 PushButton2 属性 FontSize String Tag FontSize String 属性修改值 16 螺旋线 pushbuttonLxx 16 内摆线 PushButton3 PushButton4 Static Text1 Static Text2 Static Text3 Static Text4 Static Text5 Edit Text1 Edit Text2 Edit Text3 Edit Text4 Edit Text5 Tag FontSize String Tag FontSize String Tag String String String String String String Tag String Tag String Tag String Tag String Tag pushbuttonNBX 16 圆旋转成圆环 pushbuttonCtoC 16 退出 pushbuttonExit 大圆半径 小圆半径 修正值 圆半径 离转轴的距离 空或设置成一个适定值,如10 editBCR 空或设置成一个适定值,如2 editSCR 空或设置成一个适定值,如1 editXZZ 空或设置成一个适定值,如4 editCR 空或设置成一个适定值,如10 editBExit
注:上面控件名称的编号,比如1,2之类,在界面上是没有的,只是我按照从上到下的次序,为方便叙述而编写的。
最后,添加程序(在添加程序前,最好先将文件保存一下,比如以Exp8.m为文件名保存),添加程序的常用方法是:单击菜单命令view——M-file Editor,此时,得到下面的程序: function varargout = Exp8(varargin) gui_Singleton = 1;
gui_State = struct('gui_Name', mfilename, ... 'gui_Singleton', gui_Singleton, ... 'gui_OpeningFcn', @Exp8_OpeningFcn, ... 'gui_OutputFcn', @Exp8_OutputFcn, ...
'gui_LayoutFcn', [] , ... 'gui_Callback', []); if nargin && ischar(varargin{1})
gui_State.gui_Callback = str2func(varargin{1}); end if nargout
[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:}); else
gui_mainfcn(gui_State, varargin{:}); end
%上面的是系统初始化代码,绝对不要去修改它们。
function Exp8_OpeningFcn(hObject, eventdata, handles, varargin) handles.output = hObject; guidata(hObject, handles);
%上面的代码,告诉我们,一般的用户界面的自己设置的初始化状态应添加在这个函数内。 function varargout = Exp8_OutputFcn(hObject, eventdata, handles) varargout{1} = handles.output;
%上面的函数返回的量直接到命令窗口。
function pushbuttonLxx_Callback(hObject, eventdata, handles)
%上面的函数是点击螺旋线按钮时,执行的代码,即可以在此处添加有关螺旋线的程序代码。 function pushbuttonNBX_Callback(hObject, eventdata, handles)
%上面的函数是点击内摆线按钮时,执行的代码,即可以在此处添加有关内摆线的程序代码。
% --- Executes on button press in pushbuttonExit.
function pushbuttonExit_Callback(hObject, eventdata, handles)
%上面的函数是点击退出按钮时,执行的代码,即可以在此处添加退出时的程序代码。 function editBCR_Callback(hObject, eventdata, handles)
%上面的函数是 editBCR这个编辑文本按钮回调时,执行的代码。 BigCircleRadial=str2double(get(hObject,'String')); function editBCR_CreateFcn(hObject, eventdata, handles) if ispc
set(hObject,'BackgroundColor','white'); else
set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor')); end
%上面的函数用来在程序中设置editBCR的属性值。 function editSCR_Callback(hObject, eventdata, handles)
%上面的函数是editSCR这个编辑文本按钮回调时,执行的代码。 function editSCR_CreateFcn(hObject, eventdata, handles) if ispc
set(hObject,'BackgroundColor','white'); else
set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor')); end
%上面的函数用来在程序中设置editSCR的属性值。
function editXZZ_Callback(hObject, eventdata, handles)
%上面的函数是editXZZ这个编辑文本按钮回调时,执行的代码。
function editXZZ_CreateFcn(hObject, eventdata, handles) if ispc
set(hObject,'BackgroundColor','white'); else
set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor')); end
%上面的函数用来在程序中设置editXZZ的属性值。
function pushbuttonCtoC_Callback(hObject, eventdata, handles)
%上面的函数是点击圆旋转成圆环按钮时,执行的代码,即可以在此处添加圆旋转成圆环时的程序代码。 function editCR_Callback(hObject, eventdata, handles)
%上面的函数是editCR这个编辑文本按钮回调时,执行的代码。 function editCR_CreateFcn(hObject, eventdata, handles) if ispc
set(hObject,'BackgroundColor','white'); else
set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor')); end
%上面的函数用来在程序中设置editCR的属性值。 function editDist_Callback(hObject, eventdata, handles) function editDist_CreateFcn(hObject, eventdata, handles) if ispc
set(hObject,'BackgroundColor','white'); else
set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor')); end
%上面的函数用来在程序中设置editDist的属性值。
下面真正添加自己的程序,最后成的程序如下:自己添加的程序用红色表示。 function varargout = Exp8(varargin) gui_Singleton = 1;
gui_State = struct('gui_Name', mfilename, ... 'gui_Singleton', gui_Singleton, ... 'gui_OpeningFcn', @Exp8_OpeningFcn, ... 'gui_OutputFcn', @Exp8_OutputFcn, ... 'gui_LayoutFcn', [] , ... 'gui_Callback', []); if nargin && ischar(varargin{1})
gui_State.gui_Callback = str2func(varargin{1}); end if nargout
[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:}); else
gui_mainfcn(gui_State, varargin{:}); end
%上面的是系统初始化代码,绝对不要去修改它们。
function Exp8_OpeningFcn(hObject, eventdata, handles, varargin) handles.output = hObject; guidata(hObject, handles);
%这里选择了一个图片文件,作为初始画面,具体的图片可以选择自己喜欢的。 map1=imread('Water lilies.jpg'); image(map1)
%上面的代码,告诉我们,一般的用户界面的自己设置的初始化状态应添加在这个函数内。 function varargout = Exp8_OutputFcn(hObject, eventdata, handles)
varargout{1} = handles.output;
%上面的函数返回的量直接到命令窗口。
function pushbuttonLxx_Callback(hObject, eventdata, handles)
%上面的函数是点击螺旋线按钮时,执行的代码,即可以在此处添加有关螺旋线的程序代码。 axes(handles.axes1) cla v=2; alf=pi/6; omg=pi/5; t=0:0.01:100;
x=v*sin(alf).*cos(omg*t).*t; y=v*sin(alf).*sin(omg*t).*t; z=v*cos(alf).*t; %plot3(x,y,z)
axis([-100 100 -100 100 0 160]) grid on axis equal on comet3(x,y,z)
%上面的程序是“一质点,沿着已知圆锥面的一条直母线自圆锥的顶点起,作等速直线运动,另一方面这一条母线在圆锥面上,过圆锥的顶点绕圆锥的轴(旋转轴)作等速的转动,这时质点在圆锥面上的轨迹”的动态形成过程。 function pushbuttonNBX_Callback(hObject, eventdata, handles)
%上面的函数是点击内摆线按钮时,执行的代码,即可以在此处添加有关内摆线的程序代码。 axes(handles.axes1) cla
a=str2double(get(handles.editBCR,'String')); b=str2double(get(handles.editSCR,'String')); k=str2double(get(handles.editXZZ,'String')); axis([-a-2 a+2 -a-2 a+2 0 a+2]) line([-a-2,a+2],[0,0]); hold on
line([0,0],[-a-2,a+2 u=0:pi/30:2*pi; x=a*cos(u); y=a*sin(u); plot(x,y) x=b*cos(u)+a-b; y=b*sin(u); plot(x,y)
axis equal on grid on
theta=0:pi/1800:k*a*pi;
x=(a-b)*cos(b/a*theta)+b*cos((a-b)/a*theta); y=(a-b)*sin(b/a*theta)-b*sin((a-b)/a*theta); comet(x,y)
%上面的程序是内摆线的动态的形成过程
% --- Executes on button press in pushbuttonExit.
function pushbuttonExit_Callback(hObject, eventdata, handles)
%上面的函数是点击退出按钮时,执行的代码,即可以在此处添加退出时的程序代码。
ss=questdlg('你真的要退出吗?','退出信息窗口!','不,我还想看看!','是的,我要退出!','是的,我要退出!'); switch ss
case '是的,我要退出!' delete(handles.figure1); end
%上面的程序是退出程序时信息窗口
function editBCR_Callback(hObject, eventdata, handles)
%上面的函数是 editBCR这个编辑文本按钮回调时,执行的代码。 function editBCR_CreateFcn(hObject, eventdata, handles) if ispc
set(hObject,'BackgroundColor','white'); else
set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor')); end
%上面的函数用来在程序中设置editBCR的属性值。 function editSCR_Callback(hObject, eventdata, handles)
%上面的函数是editSCR这个编辑文本按钮回调时,执行的代码。 function editSCR_CreateFcn(hObject, eventdata, handles) if ispc
set(hObject,'BackgroundColor','white'); else
set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor')); end
%上面的函数用来在程序中设置editSCR的属性值。
function editXZZ_Callback(hObject, eventdata, handles)
%上面的函数是editXZZ这个编辑文本按钮回调时,执行的代码。
function editXZZ_CreateFcn(hObject, eventdata, handles) if ispc
set(hObject,'BackgroundColor','white'); else
set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor')); end
%上面的函数用来在程序中设置editXZZ的属性值。
function pushbuttonCtoC_Callback(hObject, eventdata, handles)
%上面的函数是点击圆旋转成圆环按钮时,执行的代码,即可以在此处添加圆旋转成圆环时的程序代码。 axes(handles.axes1) cla %a=4; %b=10;
a=str2double(get(handles.editCR,'String')); b=str2double(get(handles.editDist,'String')); u=0:pi/30:2*pi; y=a.*cos(u)+b; z=a.*sin(u); n=length(u); x=0*ones(1,n); if a
axis([-b-2 b+2 -b-2 b+2 -a-2 a+2]) else
axis([-a-2 a+2 -a-2 a+2 -b-2 b+2]) end plot3(x,y,z) pause(1) for t=0:pi/60:2*pi x=y.*sin(t); y1=y.*cos(t); plot3(x,y1,z) pause(0.1) grid on hold on %axis equal on
%view([-20,0]) end
%上面的程序是圆旋转成圆环的动态的形成过程 function editCR_Callback(hObject, eventdata, handles)
%上面的函数是editCR这个编辑文本按钮回调时,执行的代码。 function editCR_CreateFcn(hObject, eventdata, handles) if ispc
set(hObject,'BackgroundColor','white'); else
set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor')); end
%上面的函数用来在程序中设置editCR的属性值。 function editDist_Callback(hObject, eventdata, handles) function editDist_CreateFcn(hObject, eventdata, handles) if ispc
set(hObject,'BackgroundColor','white'); else
set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor')); end
%上面的函数用来在程序中设置editDist的属性值。
正在阅读:
基于matlab的可视化界面制作03-22
纪委落实党风廉政建设监督责任实施细则04-05
2018-2024年中国应用分发市场运营态势研究报告(目录) - 图文01-17
公司周年庆祝福语02-24
五年级数学上册第5单元简易方程第14课时实际问题与方程2教案新人教版12-17
领导力测试 - 结构化面试11-07
电梯维修工工作中应注意的问题提示09-14
人物肖像描写02-16
《耳听为虚 - 同音字和同音词》导学案05-07
- 多层物业服务方案
- (审判实务)习惯法与少数民族地区民间纠纷解决问题(孙 潋)
- 人教版新课标六年级下册语文全册教案
- 词语打卡
- photoshop实习报告
- 钢结构设计原理综合测试2
- 2014年期末练习题
- 高中数学中的逆向思维解题方法探讨
- 名师原创 全国通用2014-2015学年高二寒假作业 政治(一)Word版
- 北航《建筑结构检测鉴定与加固》在线作业三
- XX县卫生监督所工程建设项目可行性研究报告
- 小学四年级观察作文经典评语
- 浅谈110KV变电站电气一次设计-程泉焱(1)
- 安全员考试题库
- 国家电网公司变电运维管理规定(试行)
- 义务教育课程标准稿征求意见提纲
- 教学秘书面试技巧
- 钢结构工程施工组织设计
- 水利工程概论论文
- 09届九年级数学第四次模拟试卷
- 可视化
- 界面
- 基于
- 制作
- matlab
- 《电子商务概论》本科实验讲义
- 政府补助准则修订后部分会计处理问题探析2017至2018最新会计实务
- 初三山东省德州地区2018届九年级物理上学期期末考试试题新人教版
- 2018年4月高教自考《财务管理学》试卷及答案解释
- 订单培养协议书
- 国际金融绪论笔记
- 西财试题
- 2015年化学药品原料药造影剂行业分析报告
- 沉淀溶解平衡(学生)
- MFC画板程序教程 - 图文
- 统筹城乡发展推进新农村建设建设情况汇报
- 近百年中国新闻采访历史
- 内科习题大题集锦-精品整理 - 图文
- 2016预备党员转正年终思想汇报
- 经典无领导小组讨论题目(附答案)
- 中考试题分类汇编--二元一次方程
- 郑州出口加工区公寓楼 33#楼施工组织设计
- 年产12万套中高档家具项目可行性研究报告书 - 图文
- 浅谈居住小区景观规划设计
- 学校行风评议整改措施(完整版)