麻鍇,孔詩媛,孫文博,袁文輝
(吉林省氣象探測保障中心,吉林,長春130061)
利用Matlab圖形用戶界面(Matlab/GUI)可以實現(xiàn)強大的計算功能和簡潔直觀的操作界面[1]。文獻[2]中以Matlab/GUI實現(xiàn)了三容水箱液位的計算機監(jiān)控系統(tǒng)。文獻[3]利用 Matlab/GUI設計了運動控制系統(tǒng)課程的可視化虛擬實驗平臺,文獻[4]和文獻[5]分別實現(xiàn)了基于Matlab/GUI的數(shù)值積分界面和風洞信號小波分析處理軟件。本文鑒于Matlab/GUI開發(fā)計算類型軟件的優(yōu)勢,利用其實現(xiàn)空盒氣壓表示值修正值的自動計算功能,這種方式數(shù)據(jù)處理不會產(chǎn)生計算誤差,數(shù)據(jù)處理結果更加直觀。
空盒氣壓表兩個檢定點之間存在若干個整10氣壓點,各個氣壓點呈等差數(shù)列分布,計算這些氣壓點的修正值采用線性插值的方法,每個氣壓點修正值也呈等差數(shù)列分布,只需以兩個檢定點的差值為距離,除以跨步數(shù),計算出步長,再通過步長求出每一個修正值。
Matlab GUI軟件的制作包括操作界面設計和控件的后臺程序編寫兩部分。示值修正值計算軟件的設計思路是從實現(xiàn)基本功能的角度出發(fā),以最簡潔直觀的方式布局軟件的操作界面,最后編寫控件的回調(diào)函數(shù)等后臺程序。
示值修正值計算軟件的設計原則是以空盒氣壓表的計量性能要求和檢定方法為基礎,以提高計算效率,減少人為誤差為目的。所以,軟件的基本功能包括:能夠計算1060hPa~800hPa的測量范圍內(nèi)的示值修正值;“四舍六入”,逢五奇進偶舍的修約方法計算修正值;能夠顯示相鄰整10hPa氣壓點之間的示值修正值的變量(差值),并對其是否滿足計量要求進行判斷,給出結論。
根據(jù)軟件基本功能的要求,1060hPa至800hPa范圍內(nèi)的27個整10hPa氣壓點,通過 27個靜態(tài)文本顯示,與只對應地布置27個可編輯文本顯示修正值的計算結果;布置26個可編輯文本顯示相鄰整10hPa氣壓點之間的差值;布置兩個按鈕控件,實現(xiàn)根據(jù)輸入數(shù)據(jù)計算修正值。
正值和修正值的變量和一鍵清空所有可編輯文本,方便軟件的重復實用;最后布置一個可編輯文本用來顯示示值修正值的檢定結論。
檢定規(guī)程中要求1010hPa是必檢點,所以在圖1中,1010hPa為藍色,有別于其他氣壓點,這種相對人性化的考慮可以方便檢定人員準確地輸入1010hPa的修正值。
3.3.1 按鍵“計算修正值”的回調(diào)函數(shù)
程序需要判斷輸入的修正值屬于來自哪一個氣壓點,故使用“eval()”對所有27個可編輯文本進行讀取,并將字符串格式轉(zhuǎn)換為浮點型,其代碼為:
for ii=1:27
a{ii}=eval(['get(handles.edit',num2str(ii),',''String'');']);
b(ii)=str2double(a{ii});
end
在程序中將靜態(tài)文本的號段設定為從text1到text27,將可編輯文本的號段設定為從edit28到edit56。所以,氣壓值的靜態(tài)文本與修正值的可編輯文本建立了方便程序?qū)崿F(xiàn)的一一對應關系,即氣壓值所處的靜態(tài)文本是text(n),那么,這個氣壓值對應的可編輯文本就是edit(n+27)。通過下面代碼:c=find~〔isnan(b)〕;d=b〔~isnan(b)〕;可以獲取有輸入和沒有輸入的可編輯文本的號段,通過 text(n)與 edit(n+27)的對應關系就能夠判斷出有輸入修正值氣壓值和沒有輸入的氣壓值,以及有輸入的氣壓點之間存在整10hPa氣壓點的個數(shù)。從而實現(xiàn)計算其修正值,并寫入到?jīng)]有獲得輸入的可編輯文本中。

圖1 軟件操作界面
3.3.2 按鍵“清空數(shù)據(jù)”的回調(diào)函數(shù)
按鍵“清空數(shù)據(jù)”的回調(diào)函數(shù):
當同時檢定了多個空盒氣壓表時,需要多次使用修正值計算器時,就需要清空上一次使用的結果,代碼如下:
for i=1:27
u='';
eval(['set(handles.edit',num2str(i),',''FontWeight'',''normal'',''String'',u);']);
end
for ti=29:54
u='';
eval(['set(handles.edit',num2str(ti),',''FontWeight'',''normal'',''String'',u,''ForegroundColor'',[0,0,0]/255);']);
end
代碼的原理就是將一個空的字符串循環(huán)寫入到每一個可編輯文本。因為計算修正值差值時將不合格的字體標紅,加粗處理了,所以需要通過FontWeight和ForegroundColor的值重新設定為初始狀態(tài)的值。
本文利用開發(fā)的空盒氣壓表的示值修正值計算軟件,其具有良好的人機交互特性,使得空盒氣壓表的檢定效率顯著提升,完全消除了人為誤差。與其他面向?qū)ο蟮木幊陶Z言相比,Matlab/GUI特別適合應用到計量檢定數(shù)據(jù)處理領域,其編程方式簡單,數(shù)學函數(shù)豐富,計量人員不用投入太多時間學習開發(fā)語言就可以完成軟件的編寫,節(jié)省大量時間。目前已經(jīng)有大量利用Matlab/GUI解決數(shù)學模型可視化,科研數(shù)據(jù)處理可視化的研究工作,但鮮有將其利用在計量檢定數(shù)據(jù)處理中,所以,本文為其他檢定業(yè)務的數(shù)據(jù)處理提供了有效的解決辦法。