林秀娜+陳傳華+王強+賈立國+邢偉偉
摘要:依據實際工作的應用需求,基于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