2024年6月12日发(作者:)
MicrocomputerApplicationsVol.27,No.8,2011
文章编号:
1007-757X(2011)08-0053-03
技术交流微型电脑应用2011年第27卷第8期
基于
MATLAB
的
GUI
设计应用软件
龚妙昆
摘要:在MATLAB的GUI(GraphicUserInterface)基础上,充分地利用了UITABLE(图形界面表格)的特性,结合了运筹学
中的一些优化算法,设计了一款综合应用软件,它包括了线性规划、图论、存储论等优化内容。利用MATLAB中提供的编
译命令,可将其编译为能在Windows环境下运行的“Window”型应用软件。
关键词:MATLAB图形用户界面
中图分类号:TP202
图形界面表格运筹学
文献标志码:A
表格)变量的图形输入界面的设计、使用方法。该程序经过
编译,可在Windows环境下独立使用。
0引言
MATLAB的名称取自于MATrixLABoratory两个单词
的各自前3个字母,是一种基于矩阵运算的数值计算环境和
编程语言。它将高性能的数值计算功能和可视化特点集成于
一体,提供了大量的内置函数,因此被广泛地应用于各个领
域的科学计算。由于MATLAB的开放性,使得MATLAB
的功能不继得到完善和扩充。目前的MATLAB提供了众多
的工具箱函数,如信号处理、控制系统、最优化等。MATLAB
还有强大便捷的绘图功能,留给用户的是友好的命令界面和
二维和三维绘图界面。GUI是MATLAB的另一个重要特色。
利用GUI,可以制作一些操作简单的专用工具,譬如,演示
某些技术、方法或一些小的应用软件。在参考文献[1]中,
就有许多关于高等数学、大学物理等方面的演示性例子。在
这些例子中,变量、参量的输入都是比较简单的、少量的,
因此功能也是单一的,尤其是还没有矩阵(或表格)型变量
的图形输入界面。在MATLAB中,矩阵(或表格)型数据
的输入输出,通常是利用读取EXCEL或输出到EXCEL文
件来实现的。文献[2]利用ActiveX控件方法,只实现了矩阵
(或表格)型数据的图形输出界面,没有直接的图形录入界
面。
本文主要介绍两方面的内容:其一,介绍一个简易物流
仓储系统的整体框架和基本功能,如图1所示:
1用户图形界面简介
图形用户界面的程序是在图形界面下创建与用户交互
的控件元素,使用户可以通过操作这些交互控件实现特定的
功能,并且可以返回显示在程序界面相应的结果显示区域
中。MATLAB的GUI编程可以用两种方式实现。一是直观
的GUI设计工具GUIDE,二是利用M文件代码构建界面,
即M文件界面设计。虽然这种方法使用起来略显麻烦,但
过程准确,结果简练。事实上,不管采用哪种设计方法,都
要经过内容分析、构思草图、控件布局和代码编写等过程。
2系统的总体设计和子系统功能介绍
本系统采用代码编写GUI界面,系统的主界面如图1。
分五个子系统,启动子系统的方式有两种,一种是菜单方式;
另一种是图标按钮方式。其中:
(1)子系统[供需优化]:处理在一定运价下,货物的供
应地与需求地之间的优化运输问题。其界面如图2所示:
图1一个小型物流企业的优化系统
图2供需优化窗口
一个小型物流企业的优化系统;其二,着重介绍矩阵(或
——————————————
它的主要窗口为运输价格表的输入。
(2)子系统[路线优化]:处理运输过程中的最短路径问
作者简介:龚妙昆(1959-),男,华东师范大学数学系讲师,研究方向:控制理论研究与应用,上海,200241
53
MicrocomputerApplicationsVol.27,No.8,2011技术交流微型电脑应用2011年第27卷第8期
题,采用的算法是Floyd算法。它的主窗口是各个节点之间
的距离输入表格。
(3)子系统[装车优化]:依据背包原理进行算法设计。
(4)子系统[配送优化]:针对运输路线中各节点上即有
卸货又有装货的情况,而设计的优化算法。
(5)子系统[库存优化]:考虑了两类存贮模型。其一为
不能缺货,但能及时补充货物的模型;其二为提前订货模型。
界面如图3所示:
则在窗口图形f中,建立一个列名为:A,B,C,D,E的
5×5的表格。
当表格超出指定范围时,会自动出现滚动条,通常将表
格的大小(或者说是矩阵的维数)设计成与实际问题相适应
的范围内。
4主界面背景设计和标题栏图标设计
利用在轴对象中插入图片的方式实现。代码如下:
hf=figure('Color',[0.8,0.8,0.8],...%%设定主界面
'Position',[150,200,800,600],...
,...);
%%%%%%设置背景图片%%%%%
ha=axes('Position',[0011]);
imshow(imread(''));
%%%%设置特殊图标%%%%%
figFrame=get(hf,'JavaFrame');
newIcon=con('');
ureIcon(newIcon);
其中的''为图标图片文件,''为背景图片文件。
另外,第一个模块的编码为:
hpub1=uicontrol(hf,'Style','pushbutton',...
'Position',[5022015080],...
'String','供需优化',...
'Fontsize',22,...
'Fontname','隶书',...
'ForegroundColor','blue',...
'CallBack',{@m1});
当触发了该模块后,就执行回调函数m1(程序段略)。
图3库存优化子系统
3UITABLE的基本属性和使用
在上面所介绍的内容中,最主要的是建立矩阵(或表格)
型变量的输入界面。这在以往的文献和书籍中暂未出现。因
此,本文侧重介绍它。MATLAB中的用户界面表格函数为
UITABLE,调用后在图形窗口中,创建一个指定行数和指
定列数的表格。例如
UITABLE(numrows,numcolumns);
再如,在建立用户界面表格的时候,可以指定列(或行)
的名称:
UITABLE(data,columnNames);
它的主要属性有
ColumnNames:Cellarrayofstringsforcolumnnames.
Data:
GridColor:
NumColumns:
NumRows:
t=uitable(3,4);
则在当前窗口中建立一个3行4列的表格,对象的实际大小
默认。再如
f=figure;
t=uitable(f,rand(5),{'A','B','C','D','E'});
54
Cellarrayofvaluestobedisplayedinthe
table
string,RGBvector.
intspecifyingnumberofcolumns.
intspecifyingnumberofrows.
5子系统[路线优化]-图形界面设计
在这个窗口中,主要是布置一个矩阵输入界面,用以表
示各个节点之间的距离,如图4所示:
等。另外,也可以通过下列方式创建具体的表格
图4运输路径中,各节点名称、节点间距离输入界面
(注:两地之间,若无通路,则以10000标识)
MicrocomputerApplicationsVol.27,No.8,2011技术交流微型电脑应用2011年第27卷第8期
优化算法采用Floyd算法。为了使优化后的输出结果有
好的可视性,增加了节点的名称。在编程方面,除了常规的
菜单设计外,还有数据的传递,事件响应的回调函数编写。
下面就其最主要的部分进行介绍。
5.1窗口图形的设计
hf_lxyh=figure('Color',[0.8,0.8,0.8],...
'Position',[200,150,800,600],...
'Menu','none',...%%%关闭系统默认菜单
'NumberTitle','off',...%%关闭系统默认标题
'Name','自制标题');
figFrame=get(hf_lxyh,'JavaFrame');
newIcon=con('');%%自制窗
口左上角图标,替换原MATLAB的默认图标
5.2表格(或矩阵)输入界面的设计
在窗口图形hf_lxyh中,仅说明第二个表格设计代码:
h_t2=uitable(hf_lxyh,...
'NumRows',15,...
'NumColumns',15,...
'Position',[50,50,700,260]);
这样就在指定的位子按照规定的大小建立了15行15
列的表格,如果超过大小范围,则自动出现滚动条,如图
4所示。
5.3表格对象句柄的保存
将该表格对象的句柄置入整个图形界面的数据区里的
程序为
hndllist={h_jds_m,h_t1,h_t2};%%句柄对象组
set(hf_lxyh,'UserData',hndllist);%%句柄对象组储存在
图形窗口的数据区里
5.4表格对象的句柄和表格数据的获取
获取数据的回调函数的主要程序段为
functionyhcb(cbo,eventdata)
hdls=get(gcf,'UserData');%%获取表格句柄
…
t=get(hdls{3},'Data');%
从表格中获取间距值
fori=1:node_num%%逐行逐列读取数据
forj=1:node_num
ifisempty(t(i,j))
dist(i,j)=0;
elseifischar(t(i,j))
dist(i,j)=str2num(char(t(i,j)));
else
dist(i,j)=t(i,j);
end
end
55
[4]
[3]
[2]
[1]
end
由此获得图形界面表格中的数据。
5.5最短路径Floyd算法和结果的可视化输出
关于Floyd算法,直接编程即可,这里不再赘述。另外,
Floyd算法的结果,包含了任意两点的最短路线。譬如,从
第2节点出发到第5个节点,最优路径为:乙
度为:60。结果如图5所示:
丙戊,长
图5路线优化系统的输出界面
6结束语
本文的主要工作是介绍表格(或矩阵)型数据输入图形
界面设计方法,弥补了以往这方面的不足。通过一个实例的
设计和运用,表明这些设计方法是简单易行和稳定可靠的。
以上图例表明:只要巧妙构思,合理运用GUI等工具,用
MATLAB语言也能设计出“Window”型的软件。由于矩阵运
算在科学计算中的广泛性,可以知道:在MATLAB图形界
面设计中,本文所介绍的方法具有实在的参考价值。程序经
过mcc编译后,能在Windows环境下运行,这就拓广了
MATLAB应用人员的范围。
参考文献:
陈垚光.精通MATLABGUI设计[M].电子工业出版
社,2008.2.
李亚军.在MATLAB图形用户界面设计中使用
ActiveX[J].计算机与数字工程.第34卷(2006)第12期:
135-137.
任毅,袁晓.Matlab语言中两个相位解卷绕命令的分
析与改进——使用Matlab语言[J].微型电脑应用.
2008年第24卷第2期:56-57.:
张宜华.精通MATLAB5[M].清华大学出版社.
1999.6.
(收稿日期:2010.12.20)
发布者:admin,转转请注明出处:http://www.yc00.com/news/1718155168a2747144.html
评论列表(0条)