林秀娜+陳傳華+王強(qiáng)+賈立國(guó)+邢偉偉
摘要:依據(jù)實(shí)際工作的應(yīng)用需求,基于MATLAB GUI設(shè)計(jì)了寧東線HVDC(High Voltage Direct Current)干擾輔助分析系統(tǒng)。該文首先對(duì)基于MATLAB GUI的軟件設(shè)計(jì)流程進(jìn)行了概述,之后對(duì)MATLAB GUI 數(shù)據(jù)傳遞的關(guān)鍵技術(shù)方法進(jìn)行了介紹,結(jié)合設(shè)計(jì)軟件的主要功能的說(shuō)明,分析了MATLAB GUI設(shè)計(jì)的優(yōu)缺點(diǎn)。
關(guān)鍵詞:MATLAB;GUI;HVDC干擾;輔助分析
中圖分類號(hào):TP319 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):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的數(shù)據(jù)處理能力早已得到廣泛的認(rèn)同,其在數(shù)據(jù)處理、計(jì)算以及圖像分析等方面的強(qiáng)大功能為其在上述方面的廣泛應(yīng)用奠定了基礎(chǔ)。隨著MATLAB圖形用戶界面(GUI)功能的日漸完善,把MATLAB的數(shù)據(jù)處理模塊通過(guò)圖形化窗口界面來(lái)表現(xiàn)和展示的方式更加普及。由于GUI的友好界面,使得不了解MATLAB各種函數(shù)的人員也能夠通過(guò)MATLAB GUI軟件進(jìn)行各種數(shù)據(jù)的處理,于是MATLAB實(shí)現(xiàn)了從專業(yè)人員到非專業(yè)人員的拓展,MATLAB的應(yīng)用領(lǐng)域也得到了極大的推廣。MATLAB GUI是為專業(yè)人員搭建的軟件開發(fā)界面,也是非專業(yè)人員應(yīng)用利用MATLAB 實(shí)現(xiàn)功能數(shù)據(jù)分析、圖像處理功能的交互界面。GUI用戶可以在不了解具體的MATLAB函數(shù)的情況下,通過(guò)操控基于MATLAB GUI的軟件的各個(gè)控件,來(lái)實(shí)現(xiàn)人與計(jì)算機(jī)的溝通,而無(wú)需通過(guò)各種專業(yè)的編程語(yǔ)言命令來(lái)實(shí)現(xiàn)人機(jī)交互,GUI開發(fā)人員并通過(guò)對(duì)控件的回調(diào)函數(shù)(Callback)的編程,實(shí)現(xiàn)特定的功能。本文結(jié)合實(shí)例,對(duì)基于MATLAB GUI的軟件設(shè)計(jì)進(jìn)行了綜合介紹。
1 設(shè)計(jì)流程
使用MATLAB GUI進(jìn)行軟件開發(fā)可以分為三個(gè)步驟,即界面布局、控件添加及功能實(shí)現(xiàn)和軟件封裝。
通過(guò)MATLAB內(nèi)置的GUIDE開發(fā)環(huán)境,可以非常便捷地進(jìn)行MATLAB GUI的界面的設(shè)計(jì)和開發(fā)。通過(guò)GUIDE開發(fā)環(huán)境,可以實(shí)現(xiàn)前臺(tái)FIG格式軟件界面的設(shè)計(jì)和運(yùn)行,以及各個(gè)控件屬性的配置,也能夠通過(guò)后臺(tái)M文件實(shí)現(xiàn)界面控件功能的編輯。前臺(tái)界面與后臺(tái)M文件是互相關(guān)聯(lián)的,當(dāng)在前臺(tái)軟件界面中添加不同的控件時(shí),后臺(tái)的M文件能夠自動(dòng)生成與前臺(tái)添加控件相應(yīng)的函數(shù),如此為開發(fā)人員提供了便利,降低了開發(fā)難度。在應(yīng)用MATLAB GUI進(jìn)行軟件開發(fā)時(shí),控件間的數(shù)據(jù)傳遞是軟件開發(fā)的難點(diǎn),本文將對(duì)此做詳細(xì)的說(shuō)明。為了實(shí)現(xiàn)程序的移植和推廣應(yīng)用,完成軟件開發(fā)后需要進(jìn)行封裝,通過(guò)封裝生成可執(zhí)行文件,為了使軟件能夠在沒(méi)有安裝MATLAB的計(jì)算機(jī)上運(yùn)行,在進(jìn)行軟件封裝時(shí)要將MATLAB的運(yùn)行環(huán)境MCRInstaller.exe一起封裝。
2 數(shù)據(jù)傳遞
按照傳遞類型,MATLAB GUI的數(shù)據(jù)傳遞可以分為GUI之間的數(shù)據(jù)傳遞和GUI內(nèi)部各個(gè)控件之間的數(shù)據(jù)傳遞,兩種類型的數(shù)據(jù)傳遞方式共有六種。
1) save和load函數(shù)
這2個(gè)函數(shù)可應(yīng)用于GUI內(nèi)以及GUI間。save是將變量的值以純數(shù)據(jù)文件的形式保存到計(jì)算機(jī)磁盤,使用時(shí)用load命令從磁盤載入數(shù)據(jù)。此方式的缺點(diǎn)是存取速度相對(duì)較慢。
2) setappdata\getappdata函數(shù)。
這種方式適用于GUI內(nèi)以及GUI間。與全局變量類似,可以實(shí)現(xiàn)多個(gè)變量的存取,但是應(yīng)用比全局變量繁瑣。此方式適用范圍相對(duì)廣泛,而且不會(huì)造成變量混亂。使用方法就是先將變量名稱和變量值用setappdata傳遞給GUI或控件,需要時(shí)則用getappdata從GUI或控件中調(diào)出。
3) global變量。
此方式適用于GUI內(nèi)以及GUI間。這種傳遞方式應(yīng)用簡(jiǎn)單,不需要其他的參數(shù)傳遞命令。但是,全局變量在應(yīng)用之前要先聲明,而且如果某一函數(shù)內(nèi)部不慎修改了全局變量,則會(huì)造成變量混亂,此類錯(cuò)誤的隱蔽性較高,查找也比較繁瑣。
4) 應(yīng)用UserData。
這一方式僅適用于GUI內(nèi)。GUI的每個(gè)控件均具有UserData屬性,通過(guò)將數(shù)據(jù)存儲(chǔ)到某控件中,需要時(shí)再用get函數(shù)從UserData獲取,如此實(shí)現(xiàn)數(shù)據(jù)的傳遞。由于每個(gè)控件的UserData只能存取一個(gè)變量值,所以雖然這種方式應(yīng)用簡(jiǎn)單,但是有應(yīng)用缺陷,即當(dāng)同一對(duì)象存儲(chǔ)兩次變量時(shí),之前的變量值即被覆蓋,因此UserData多用于存儲(chǔ)簡(jiǎn)單且單一的數(shù)據(jù)。
5) handles和GUIdata函數(shù)
該方式僅適用于GUI內(nèi)。使用handles.變量名在handles中添加該變量,然后用GUIdata存儲(chǔ)該變量。這種方式應(yīng)用相對(duì)繁瑣,而且若新添加變量后則可能覆蓋之前添加的變量。endprint
6) varargin和varargout函數(shù)。
這種方式僅適用于GUI間傳遞數(shù)據(jù),且只適用于主子結(jié)構(gòu),而不適用并列結(jié)構(gòu)或遞進(jìn)結(jié)構(gòu),即通過(guò)主GUI調(diào)用子GUI。
綜合上述的六種的數(shù)據(jù)傳遞方式,經(jīng)過(guò)不同方式的優(yōu)缺點(diǎn)的對(duì)比,在進(jìn)行本軟件開發(fā)過(guò)程中使用了save\load進(jìn)行大數(shù)據(jù)量的傳遞,同時(shí)考慮setappdata\getappdata函數(shù)的安全性,用于變量之間的數(shù)據(jù)傳遞,從而實(shí)現(xiàn)了整個(gè)HVDC干擾輔助分析軟件的數(shù)據(jù)傳遞功能。
3 應(yīng)用分析
根據(jù)應(yīng)用需求,設(shè)計(jì)了寧東線HVDC干擾輔助分析軟件,用于計(jì)算全國(guó)受寧東線HVDC干擾臺(tái)站的垂直分量Z、水平分量H和磁偏角D的干擾幅度,并以前兆數(shù)據(jù)庫(kù)的輸出Excel格式數(shù)據(jù)為基礎(chǔ)數(shù)據(jù),對(duì)任意臺(tái)站的記錄數(shù)據(jù)進(jìn)行繪圖。根據(jù)MATLAB GUI軟件設(shè)計(jì)開發(fā)流程,軟件的界面見(jiàn)圖1所示。
軟件界面主要分為兩個(gè)功能區(qū),分別為HVDC干擾幅度計(jì)算和記錄數(shù)據(jù)繪圖。HVDC干擾幅度計(jì)算中紅山臺(tái)的干擾幅度為輸入?yún)?shù),其余10個(gè)臺(tái)站的干擾幅度為輸出參數(shù),當(dāng)點(diǎn)擊“計(jì)算”按鈕時(shí),程序調(diào)回紅山臺(tái)的Z、H、D3個(gè)輸入?yún)?shù),經(jīng)過(guò)計(jì)算返回其余10個(gè)臺(tái)站的結(jié)果。繪圖功能通過(guò)彈出對(duì)話框,選擇Excel格式的數(shù)據(jù)文件來(lái)實(shí)現(xiàn),基于Z、H、D三種分量絕對(duì)記錄數(shù)據(jù)大小的差異性,為了更加清晰地呈現(xiàn)HVDC干擾的細(xì)節(jié)信息,故特設(shè)了去均值的功能,為了圖形后期的加工以及保存,設(shè)置了窗口繪圖功能,繪圖后可應(yīng)用窗口的任意功能對(duì)圖形進(jìn)行修改和保存。圖2左圖為彈出的窗口繪圖,而且為去均值后的曲線,右圖為原始數(shù)據(jù)繪圖。
4 結(jié)束語(yǔ)
依據(jù)實(shí)際工作的應(yīng)用需求,基于MATLAB GUI設(shè)計(jì)了寧東線HVDC干擾輔助分析軟件。為了能夠凸顯HVDC干擾的局部特性,在軟件中添加了了去均值和窗口繪圖的功能鍵,如此可以實(shí)現(xiàn)所繪制圖形后期的處理。
通過(guò)MATLAB GUI設(shè)計(jì)應(yīng)用軟件能夠?yàn)閷?duì)MATLAB具體命令函數(shù)了解較少的人員提供數(shù)據(jù)處理的功能平臺(tái),基于MATLAB本身的強(qiáng)大的數(shù)據(jù)分析和圖像處理功能,能夠?yàn)橛邢嚓P(guān)需求的人員提供極大的便利,具有較高的實(shí)用價(jià)值,從而極大地拓展了MATLAB的應(yīng)用群體。
但是MATLAB GUI時(shí)基于控件的界面,在進(jìn)行界面布局時(shí)需要做好頂層設(shè)計(jì)和總體規(guī)劃。而且在添加控件時(shí)需要預(yù)判后續(xù)功能的添加,在完善相應(yīng)控件功能時(shí),需要對(duì)整個(gè)界面的M文件進(jìn)行操作,此過(guò)程相對(duì)繁瑣。另外在進(jìn)行控件屬性設(shè)定時(shí)可能會(huì)出現(xiàn)錯(cuò)誤,一旦控件錯(cuò)誤,可能導(dǎo)致整個(gè)界面的FIG文件無(wú)法用GUIDE打開,由此導(dǎo)致之前的所有設(shè)計(jì)工作作廢,這一缺陷導(dǎo)致MATLAB GUI無(wú)法用于大型軟件的開發(fā)。
參考文獻(xiàn):
[l] 陳懷琛. MATLAB及其在理工課程中的應(yīng)用指南[M]. 西安: 西安電子科技大學(xué)出版社, 2000.
[2] 焦勇, 周喻虹. 基于MATLAB的快速圖形化數(shù)據(jù)處理軟件設(shè)計(jì)[J]. 電子科技, 2005(7):40-42.
[3] 林秀娜, 曲保安, 陳傳華, 等. MATLAB的兩種圖形用戶界面參數(shù)輸入方法[J]. 電腦知識(shí)與技術(shù), 2015(1):63-65.
[4] 萬(wàn)永革. 數(shù)字信號(hào)處理的MATLAB實(shí)現(xiàn)[M]. 北京: 科學(xué)出版社, 2007.
[5] 余承依. 基于Matlab數(shù)值計(jì)算的GUI設(shè)計(jì)[J]. 漳州師范學(xué)院學(xué)報(bào): 自然科學(xué)版, 2004, 17(4):38-40.endprint