麻鍇,孔詩(shī)媛,孫文博,袁文輝
(吉林省氣象探測(cè)保障中心,吉林,長(zhǎng)春130061)
利用Matlab圖形用戶界面(Matlab/GUI)可以實(shí)現(xiàn)強(qiáng)大的計(jì)算功能和簡(jiǎn)潔直觀的操作界面[1]。文獻(xiàn)[2]中以Matlab/GUI實(shí)現(xiàn)了三容水箱液位的計(jì)算機(jī)監(jiān)控系統(tǒng)。文獻(xiàn)[3]利用 Matlab/GUI設(shè)計(jì)了運(yùn)動(dòng)控制系統(tǒng)課程的可視化虛擬實(shí)驗(yàn)平臺(tái),文獻(xiàn)[4]和文獻(xiàn)[5]分別實(shí)現(xiàn)了基于Matlab/GUI的數(shù)值積分界面和風(fēng)洞信號(hào)小波分析處理軟件。本文鑒于Matlab/GUI開發(fā)計(jì)算類型軟件的優(yōu)勢(shì),利用其實(shí)現(xiàn)空盒氣壓表示值修正值的自動(dòng)計(jì)算功能,這種方式數(shù)據(jù)處理不會(huì)產(chǎn)生計(jì)算誤差,數(shù)據(jù)處理結(jié)果更加直觀。
空盒氣壓表兩個(gè)檢定點(diǎn)之間存在若干個(gè)整10氣壓點(diǎn),各個(gè)氣壓點(diǎn)呈等差數(shù)列分布,計(jì)算這些氣壓點(diǎn)的修正值采用線性插值的方法,每個(gè)氣壓點(diǎn)修正值也呈等差數(shù)列分布,只需以兩個(gè)檢定點(diǎn)的差值為距離,除以跨步數(shù),計(jì)算出步長(zhǎng),再通過步長(zhǎng)求出每一個(gè)修正值。
Matlab GUI軟件的制作包括操作界面設(shè)計(jì)和控件的后臺(tái)程序編寫兩部分。示值修正值計(jì)算軟件的設(shè)計(jì)思路是從實(shí)現(xiàn)基本功能的角度出發(fā),以最簡(jiǎn)潔直觀的方式布局軟件的操作界面,最后編寫控件的回調(diào)函數(shù)等后臺(tái)程序。
示值修正值計(jì)算軟件的設(shè)計(jì)原則是以空盒氣壓表的計(jì)量性能要求和檢定方法為基礎(chǔ),以提高計(jì)算效率,減少人為誤差為目的。所以,軟件的基本功能包括:能夠計(jì)算1060hPa~800hPa的測(cè)量范圍內(nèi)的示值修正值;“四舍六入”,逢五奇進(jìn)偶舍的修約方法計(jì)算修正值;能夠顯示相鄰整10hPa氣壓點(diǎn)之間的示值修正值的變量(差值),并對(duì)其是否滿足計(jì)量要求進(jìn)行判斷,給出結(jié)論。
根據(jù)軟件基本功能的要求,1060hPa至800hPa范圍內(nèi)的27個(gè)整10hPa氣壓點(diǎn),通過 27個(gè)靜態(tài)文本顯示,與只對(duì)應(yīng)地布置27個(gè)可編輯文本顯示修正值的計(jì)算結(jié)果;布置26個(gè)可編輯文本顯示相鄰整10hPa氣壓點(diǎn)之間的差值;布置兩個(gè)按鈕控件,實(shí)現(xiàn)根據(jù)輸入數(shù)據(jù)計(jì)算修正值。
正值和修正值的變量和一鍵清空所有可編輯文本,方便軟件的重復(fù)實(shí)用;最后布置一個(gè)可編輯文本用來(lái)顯示示值修正值的檢定結(jié)論。
檢定規(guī)程中要求1010hPa是必檢點(diǎn),所以在圖1中,1010hPa為藍(lán)色,有別于其他氣壓點(diǎn),這種相對(duì)人性化的考慮可以方便檢定人員準(zhǔn)確地輸入1010hPa的修正值。
3.3.1 按鍵“計(jì)算修正值”的回調(diào)函數(shù)
程序需要判斷輸入的修正值屬于來(lái)自哪一個(gè)氣壓點(diǎn),故使用“eval()”對(duì)所有27個(gè)可編輯文本進(jìn)行讀取,并將字符串格式轉(zhuǎn)換為浮點(diǎn)型,其代碼為:
for ii=1:27
a{ii}=eval(['get(handles.edit',num2str(ii),',''String'');']);
b(ii)=str2double(a{ii});
end
在程序中將靜態(tài)文本的號(hào)段設(shè)定為從text1到text27,將可編輯文本的號(hào)段設(shè)定為從edit28到edit56。所以,氣壓值的靜態(tài)文本與修正值的可編輯文本建立了方便程序?qū)崿F(xiàn)的一一對(duì)應(yīng)關(guān)系,即氣壓值所處的靜態(tài)文本是text(n),那么,這個(gè)氣壓值對(duì)應(yīng)的可編輯文本就是edit(n+27)。通過下面代碼:c=find~〔isnan(b)〕;d=b〔~isnan(b)〕;可以獲取有輸入和沒有輸入的可編輯文本的號(hào)段,通過 text(n)與 edit(n+27)的對(duì)應(yīng)關(guān)系就能夠判斷出有輸入修正值氣壓值和沒有輸入的氣壓值,以及有輸入的氣壓點(diǎn)之間存在整10hPa氣壓點(diǎn)的個(gè)數(shù)。從而實(shí)現(xiàn)計(jì)算其修正值,并寫入到?jīng)]有獲得輸入的可編輯文本中。
圖1 軟件操作界面
3.3.2 按鍵“清空數(shù)據(jù)”的回調(diào)函數(shù)
按鍵“清空數(shù)據(jù)”的回調(diào)函數(shù):
當(dāng)同時(shí)檢定了多個(gè)空盒氣壓表時(shí),需要多次使用修正值計(jì)算器時(shí),就需要清空上一次使用的結(jié)果,代碼如下:
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
代碼的原理就是將一個(gè)空的字符串循環(huán)寫入到每一個(gè)可編輯文本。因?yàn)橛?jì)算修正值差值時(shí)將不合格的字體標(biāo)紅,加粗處理了,所以需要通過FontWeight和ForegroundColor的值重新設(shè)定為初始狀態(tài)的值。
本文利用開發(fā)的空盒氣壓表的示值修正值計(jì)算軟件,其具有良好的人機(jī)交互特性,使得空盒氣壓表的檢定效率顯著提升,完全消除了人為誤差。與其他面向?qū)ο蟮木幊陶Z(yǔ)言相比,Matlab/GUI特別適合應(yīng)用到計(jì)量檢定數(shù)據(jù)處理領(lǐng)域,其編程方式簡(jiǎn)單,數(shù)學(xué)函數(shù)豐富,計(jì)量人員不用投入太多時(shí)間學(xué)習(xí)開發(fā)語(yǔ)言就可以完成軟件的編寫,節(jié)省大量時(shí)間。目前已經(jīng)有大量利用Matlab/GUI解決數(shù)學(xué)模型可視化,科研數(shù)據(jù)處理可視化的研究工作,但鮮有將其利用在計(jì)量檢定數(shù)據(jù)處理中,所以,本文為其他檢定業(yè)務(wù)的數(shù)據(jù)處理提供了有效的解決辦法。