林秀娜+陈传华+王强+贾立国+邢伟伟
摘要:依据实际工作的应用需求,基于MATLAB GUI设计了宁东线HVDC(High Voltage Direct Current)干扰辅助分析系统。该文首先对基于MATLAB GUI的软件设计流程进行了概述,之后对MATLAB GUI 数据传递的关键技术方法进行了介绍,结合设计软件的主要功能的说明,分析了MATLAB GUI设计的优缺点。
关键词:MATLAB;GUI;HVDC干扰;辅助分析
中图分类号:TP319 文献标识码:A 文章编号:1009-3044(2018)01-0246-02
Abstract: According to application demand of daily work, assistant analyze of Ning-Dong High Voltage Direct Current circuit disturb 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; HVDC disturb; assistant analyze
MATLAB的数据处理能力早已得到广泛的认同,其在数据处理、计算以及图像分析等方面的强大功能为其在上述方面的广泛应用奠定了基础。随着MATLAB图形用户界面(GUI)功能的日渐完善,把MATLAB的数据处理模块通过图形化窗口界面来表现和展示的方式更加普及。由于GUI的友好界面,使得不了解MATLAB各种函数的人员也能够通过MATLAB GUI软件进行各种数据的处理,于是MATLAB实现了从专业人员到非专业人员的拓展,MATLAB的应用领域也得到了极大的推广。MATLAB GUI是为专业人员搭建的软件开发界面,也是非专业人员应用利用MATLAB 实现功能数据分析、图像处理功能的交互界面。GUI用户可以在不了解具体的MATLAB函数的情况下,通过操控基于MATLAB GUI的软件的各个控件,来实现人与计算机的沟通,而无需通过各种专业的编程语言命令来实现人机交互,GUI开发人员并通过对控件的回调函数(Callback)的编程,实现特定的功能。本文结合实例,对基于MATLAB GUI的软件设计进行了综合介绍。
1 设计流程
使用MATLAB GUI進行软件开发可以分为三个步骤,即界面布局、控件添加及功能实现和软件封装。
通过MATLAB内置的GUIDE开发环境,可以非常便捷地进行MATLAB GUI的界面的设计和开发。通过GUIDE开发环境,可以实现前台FIG格式软件界面的设计和运行,以及各个控件属性的配置,也能够通过后台M文件实现界面控件功能的编辑。前台界面与后台M文件是互相关联的,当在前台软件界面中添加不同的控件时,后台的M文件能够自动生成与前台添加控件相应的函数,如此为开发人员提供了便利,降低了开发难度。在应用MATLAB GUI进行软件开发时,控件间的数据传递是软件开发的难点,本文将对此做详细的说明。为了实现程序的移植和推广应用,完成软件开发后需要进行封装,通过封装生成可执行文件,为了使软件能够在没有安装MATLAB的计算机上运行,在进行软件封装时要将MATLAB的运行环境MCRInstaller.exe一起封装。
2 数据传递
按照传递类型,MATLAB GUI的数据传递可以分为GUI之间的数据传递和GUI内部各个控件之间的数据传递,两种类型的数据传递方式共有六种。
1) save和load函数
这2个函数可应用于GUI内以及GUI间。save是将变量的值以纯数据文件的形式保存到计算机磁盘,使用时用load命令从磁盘载入数据。此方式的缺点是存取速度相对较慢。
2) setappdata\getappdata函数。
这种方式适用于GUI内以及GUI间。与全局变量类似,可以实现多个变量的存取,但是应用比全局变量繁琐。此方式适用范围相对广泛,而且不会造成变量混乱。使用方法就是先将变量名称和变量值用setappdata传递给GUI或控件,需要时则用getappdata从GUI或控件中调出。
3) global变量。
此方式适用于GUI内以及GUI间。这种传递方式应用简单,不需要其他的参数传递命令。但是,全局变量在应用之前要先声明,而且如果某一函数内部不慎修改了全局变量,则会造成变量混乱,此类错误的隐蔽性较高,查找也比较繁琐。
4) 应用UserData。
这一方式仅适用于GUI内。GUI的每个控件均具有UserData属性,通过将数据存储到某控件中,需要时再用get函数从UserData获取,如此实现数据的传递。由于每个控件的UserData只能存取一个变量值,所以虽然这种方式应用简单,但是有应用缺陷,即当同一对象存储两次变量时,之前的变量值即被覆盖,因此UserData多用于存储简单且单一的数据。
5) handles和GUIdata函数
该方式仅适用于GUI内。使用handles.变量名在handles中添加该变量,然后用GUIdata存储该变量。这种方式应用相对繁琐,而且若新添加变量后则可能覆盖之前添加的变量。endprint
6) varargin和varargout函数。
这种方式仅适用于GUI间传递数据,且只适用于主子结构,而不适用并列结构或递进结构,即通过主GUI调用子GUI。
综合上述的六种的数据传递方式,经过不同方式的优缺点的对比,在进行本软件开发过程中使用了save\load进行大数据量的传递,同时考虑setappdata\getappdata函数的安全性,用于变量之间的数据传递,从而实现了整个HVDC干扰辅助分析軟件的数据传递功能。
3 应用分析
根据应用需求,设计了宁东线HVDC干扰辅助分析软件,用于计算全国受宁东线HVDC干扰台站的垂直分量Z、水平分量H和磁偏角D的干扰幅度,并以前兆数据库的输出Excel格式数据为基础数据,对任意台站的记录数据进行绘图。根据MATLAB GUI软件设计开发流程,软件的界面见图1所示。
软件界面主要分为两个功能区,分别为HVDC干扰幅度计算和记录数据绘图。HVDC干扰幅度计算中红山台的干扰幅度为输入参数,其余10个台站的干扰幅度为输出参数,当点击“计算”按钮时,程序调回红山台的Z、H、D3个输入参数,经过计算返回其余10个台站的结果。绘图功能通过弹出对话框,选择Excel格式的数据文件来实现,基于Z、H、D三种分量绝对记录数据大小的差异性,为了更加清晰地呈现HVDC干扰的细节信息,故特设了去均值的功能,为了图形后期的加工以及保存,设置了窗口绘图功能,绘图后可应用窗口的任意功能对图形进行修改和保存。图2左图为弹出的窗口绘图,而且为去均值后的曲线,右图为原始数据绘图。
4 结束语
依据实际工作的应用需求,基于MATLAB GUI设计了宁东线HVDC干扰辅助分析软件。为了能够凸显HVDC干扰的局部特性,在软件中添加了了去均值和窗口绘图的功能键,如此可以实现所绘制图形后期的处理。
通过MATLAB GUI设计应用软件能够为对MATLAB具体命令函数了解较少的人员提供数据处理的功能平台,基于MATLAB本身的强大的数据分析和图像处理功能,能够为有相关需求的人员提供极大的便利,具有较高的实用价值,从而极大地拓展了MATLAB的应用群体。
但是MATLAB GUI时基于控件的界面,在进行界面布局时需要做好顶层设计和总体规划。而且在添加控件时需要预判后续功能的添加,在完善相应控件功能时,需要对整个界面的M文件进行操作,此过程相对繁琐。另外在进行控件属性设定时可能会出现错误,一旦控件错误,可能导致整个界面的FIG文件无法用GUIDE打开,由此导致之前的所有设计工作作废,这一缺陷导致MATLAB GUI无法用于大型软件的开发。
参考文献:
[l] 陈怀琛. MATLAB及其在理工课程中的应用指南[M]. 西安: 西安电子科技大学出版社, 2000.
[2] 焦勇, 周喻虹. 基于MATLAB的快速图形化数据处理软件设计[J]. 电子科技, 2005(7):40-42.
[3] 林秀娜, 曲保安, 陈传华, 等. MATLAB的两种图形用户界面参数输入方法[J]. 电脑知识与技术, 2015(1):63-65.
[4] 万永革. 数字信号处理的MATLAB实现[M]. 北京: 科学出版社, 2007.
[5] 余承依. 基于Matlab数值计算的GUI设计[J]. 漳州师范学院学报: 自然科学版, 2004, 17(4):38-40.endprint