基于MATLAB GUI的数据格式标准化软件设计

2015-03-16 09:22林秀娜等
电脑知识与技术 2015年1期
关键词:软件设计数据格式

林秀娜等

摘要:根据应用需求,基于MATLAB GUI设计了数据格式标准化软件。首先对基于MATLAB GUI的软件设计流程进行了概述,之后对MATLAB GUI 数据传递的关键技术方法进行了介绍,结合对设计软件的主要功能的说明,分析了MATLAB GUI设计的优缺点。

关键词:MATLAB;GUI;数据格式;软件设计

中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2015)01-0063-03

Data Format Standardization Software Design Based on MATLAB GUI

LIN Xiu-na1, QU Bao-an1, CHEN Chuan-hua2, WANG Qiang1, JIA Li-guo1, XING Wei-wei1

(1.Taian Fiducial Seismic Station of Earthquake Administration of Shandong Province,Taian 271000, China; 2.Jiaxiang Seismic Station of Earthquake Administration of Shandong Province,Jining 272400, China)

Abstract: According to application demand, data format standardization software was designed based on MATLAB GUI. Firstly, software design flow based on MATLAB GUI is summarized. Then key technology and method about MATLAB GUI data transmission is introduced. Combining with illustration about the main function of the software, advantages and disadvantages of MATLAB GUI design is analyzed.

Key words: MATLAB; GUI; data format; software design

MATLAB以其強大的数据处理能力在矩阵运算、数值分析、图形处理等方面有着广泛的应用。自第4版推出句柄图形,尤其是MATLAB 6.0版图形用户界面(GUI)设计功能有了很大提高之后,将图形化窗口界面与数据处理模块互相结合的交互方式愈发普及。由此带来的友好界面化的数据处理使MATLAB的受益群体由熟悉MATLAB各种函数的专业人员向不了解MATLAB的人员扩展,在拓展MATLAB应用群体的同时为各个领域的数据处理带来了极大的便利。所谓图形用户界面,是指包含了各种图形控制对象,如图形窗口、菜单、对话框以及文本框等用户界面,也称为控件。利用这些用户界面,用户可以和计算机之间进行信息交流,并通过编写控件的回调函数(Callback),完成特定的功能。该文结合实例,对基于MATLAB GUI的软件设计进行了综合介绍。

1 设计流程

基于MATLAB GUI的软件设计可以概括为三步走:1) 软件界面设计;2) 模块功能开发;3) 软件封装。

MATLAB GUI提供了GUIDE开发环境,可以方便的进行界面的设计和开发。GUIDE能够把前台和后台分开编辑,前台以MATLAB图形的方式运行,用于软件界面的设计,同时对界面各个功能模块的属性进行配置。用户只需要设置各个对象相应的属性,系统自动生成与之对应的界面,大大减少了开发的难度。后台以M文件的形式存储,可用于开发各个模块功能,包括各个功能模块完成的操作,功能模块之间数据的传递等等。前台的图形开发界面和后台的M文件是相互关联的,前台每添加一个元件,后台就会产生相应的函数。MATLAB GUI的数据传递是整个设计的难点,也是关键部分,该文将对此做详细的说明。完成界面设计和模块功能开发之后,需要将设计的软件进行封装,将软件转换为可执行文件,与MATLAB的运行环境MCRInstaller.exe一起打包,从而实现程序的移植和推广应用。

2 数据传递

MATLAB GUI的数据传递按照传递类型分为GUI之间的数据传递和GUI内部各个控件之间的数据传递,GUI间和GUI内的数据传递方式分为六种。

1) global定义全局变量。

此方式适用于GUI内以及GUI间。此方式应用简单,不需要其他的参数传递命令。但是,在任控件应用全局变量之前要先声明全局变量,即global‘变量名称,而且若某一函数内部不慎修改了全局变量,则会造成变量混乱。

2) 应用setappdata\getappdata函数。

此方式适用于GUI内以及GUI间。可以实现多个变量的存取,应用相对global繁琐,但是适用范围广,且没有应用缺陷。首先将变量名称和标量值用setappdata传递给GUI或控件,使用时再用getappdata从GUI或控件中调出。

3) 应用save和load函数

此方式适用于GUI内以及GUI间。此方式是将变量的值先存到磁盘,用时从磁盘载入数据。当然,这种方式涉及到磁盘读写,速度相对较慢。

4) 应用UserData。

此方式仅适用于GUI内。每个控件均具有UserData属性,将数据存储到该控件中,使用时用get函数从UserData直接获取。此方式应用简单 ,但是每个对象仅能存取一个变量值,因此当同一对象存储两次变量时 ,先前的变量值就会被覆盖掉,因此都用UserData存储简单与单一的数据。

5) handles和GUIdata函数

此方式仅适用于GUI内。使用handles.变量名在handles中添加该变量,之后用GUIdata保存改变量。此方式应用繁琐,而且新添加变量后可能就会覆盖已添加变量。

6) varargin和varargout函数。

此方式仅适用与GUI间传递数据,且只适合与主子结构,即从主GUI调用子GUI,之后关闭子GUI,而不适合并列结构或递进结构。

根据不同的数据传递方式,基于所设计软件的功能需求,主要应用了可以进行多个变量传递而且相对安全稳定的setappdata\getappdata函数,同时辅以UserDate方式,实现了整个数据格式标准化软件的数据传递功能。

3 应用分析

根据应用需求,设计了泰安基准地震台地磁历史数据标准化软件,用于数据格式的统一转换和基础的数据处理。根据MATLAB GUI软件设计开发流程,软件的界面见图1所示,根据国际数据交换格式标准,数据相关信息均为英文。

软件界面主要分为五个功能区,分别为12个头记录的录入和选择,注释记录的录入,选择打开数据文件,数据处理以及生成标准化数据文件。其中头记录的Reported和选择数据文件之间有主动数据的传递,即Reported录入报告分量之后,分别自动传达到打开数据文件的不同的显示框,以便Select File选择与该分量对应的数據文件,见图1中所示。当点击Select File选择相应分量的数据文件之后,即显示数据文件的路径信息和文件名,见图2中所示,即Select File与显示框也有主动的数据关联。Digital Sampling与数据处理部分的Lowpass Filter存在数据被动传递,即点击Lowpass Filter后,从Digital Sampling获取数据的采样率,以进行滤波。同样,Plot Data、Select File、Lowpass Filter和Plot Filtered Data之间存在多个数据变量的传递。Lowpass Filter的Callback程序如下:

function lowpassfilter2_Callback(hObject, eventdata, handles)

value=get(handles.digitalsampling1,'Value');%获取digitalsampling的值

switch value %根据value获取string的值,即得到采样率

case 1

samplerate=1;

case 2

samplerate=1/60;

case 3

samplerate=1/3600;

end

ynumber=getappdata(handles.selectfile2,'number1'); %获取观测数据

if length(ynumber)<1

errordlg('请先读入数据文件','warn');

else

ynumberf=myfilterlp(15,samplerate/10,ynumber,samplerate);%低通滤波

setappdata(handles.lowpassfilter2,'ynumberf',ynumberf); %保存滤波

%后数据

end

先获取Digital Sampling 的值,根据取值得到对应的String的值,即为采样率,从Select File调取数据,进行滤波,之后保存滤波后的数据以备其他控件调用。

图2所示为软件的Select File功能、滤波前后对比绘图、软件控件操作的验证及警告功能等。

4 结论和讨论

综上所述,基于应用需求,设计了基于MATLAB GUI的数据格式标准化软件,经过界面设计,数据传递函数调用编程等,完成了控件之间的操作和数据传递,实现了软件的各个功能。

基于MATLAB GUI软件设计,将MATLAB的强大的数据处理能力与友好的图形用户界面相结合,实现了MATLAB功能的黑箱操作,极大地拓展了MATLAB数据处理能力的受众。而且MATLAB提供的GUIDE开发环境简便易用,降低了界面设计的复杂度,提高了设计效率。但是MATLAB GUI基于控件的界面,在进行界面设计时需要进行综合考虑,花费较多精力,不适用于大型程序的开发。对于每个控件的属性进行设定时容易引起错误,从而导致已经设计好的界面无法用GUIDE打开,只能重新设计。而且,MATLAB程序的封装性相对较差。但是在进行数据和图像处理时,MATLAB GUI无疑具有较大优势。

参考文献:

[1] 陈怀琛.MATLAB及其在理工课程中的应用指南[M].西安:西安电子科技大学出版社,2000.

[2] 纪元法,孙希延,施浒立.MATLAB的两种图形用户界面参数输入方法[J].电脑知识与技术,2008,13:728-731.

[3] 焦勇,周喻虹.基于MATLAB的快速图形化数据处理软件设计[J].电子科技,2005(7):40-42.

[4] 余承依.基于Matlab数值计算的GUI设计[J].漳州师范学院学报:自然科学版,2004,17(4):38-40.

[5] 张志涌.精通MATLAB 6.5版[M].北京:北京航空航天大学出版社,2003.

猜你喜欢
软件设计数据格式
在智能交通系统中PLC数据格式转换方法的研究
基于STC单片机的厨房智能安全管控系统的设计
基于STM8S903K3的序列打螺丝夹具的软件设计
一种VHDL语言代码重用的方法
论子函数在C语言数据格式输出中的应用
DWG与SHP数据格式互转换方法研究——以龙岩规划测绘数据为例
基于ArcGIS的规划数据格式转换研究