曹萬蒼, 王中文, 孫福玉
(1.赤峰學院, 內蒙古 赤峰 024000;2.吉林省公主嶺市范家屯第一中學, 吉林 四平 136105)
基于GUI的電磁學實驗處理系統研究
曹萬蒼1, 王中文2, 孫福玉1
(1.赤峰學院, 內蒙古 赤峰 024000;2.吉林省公主嶺市范家屯第一中學, 吉林 四平 136105)
我們對分壓電路進行分析時一般會遇到圖像和數據的處理問題,而這些圖像和數據的處理使得我們很是費心.文章利用 MATLAB 的 GUI功能設計了基于 GUI的分壓電路的處理方法.通過對 GUI開發環境中回調函數的設計,在 GUI界面上實現了分壓電路圖像和數據的處理,展示了方便靈活的數據輸入和結果圖形輸出效果.對實現系統的最佳設計提供了一個實用、方便的仿真操作平臺.
GU I;分壓電路;交互式;回調函數
分壓電路的實驗比較簡單,但實驗的處理比較煩瑣,本文給出了一種 MATLAB的 GUI處理方法,可以非常容易的解決這個問題,通過 GUI界面,可非常方便的觀察不同 K值下分壓電路的實驗動態仿真結果的仿真輸出.
分壓電路通常可分為電源、控制和測量三個部分.測量電路是先根據實驗要求而確定好的,例如選一標準的電壓表和它并聯,它可等效于一個負載,這個負載可能是容性的、感性或簡單的電阻,以 RZ表示負載.根據測量的要求,負載的電流I和電壓值U在一定的范圍內變化,這就要求有一個合適的電源.控制電路的任務就是控制負載的電流和電壓使其數值和范圍達到預定的要求.常用的制流電路和分壓電路控制元件主要使用滑線變阻器或變阻箱.
最簡單的分壓電路如圖一所示,變阻器有兩個固定端A、B與電源 E相接,負載 Rz接變阻器滑動端 C和固定端 A上,當滑動頭 C由 A端滑至 B端,電壓表上電壓由 0變到E,它調節的范圍與變阻器的阻值無關.

圖1 分壓電路
當滑動頭 C處于某一位置時,AC兩端的分壓值 U為


U=K·X·E/(K+X-X·X)

圖2 分壓特性曲線
由實驗可測得不同 K值的分壓特性曲線,用 X-Y坐標表示如圖2所示.
GUI是 Graphical User Interfaces Development Environment的一個縮寫,意為圖形用戶界面開發環境,簡稱 GUI,GUI是MATLAB的一個子窗口,它具有非常強大的功能,其優點是方便靈活的參數輸入,動態仿真結果輸出.
可采用下列步驟設計分壓電路實驗數據處理的 GUI界面:
(1)啟動 MATLAB,點擊 file菜單,選中 GUIDE子窗口選項,打開 GUI的布局編輯器窗口.
(2)如圖三分壓電路 GUI界面所示,拖放所需要的控件,這里拖放一個動態文本框到工作區,用來放置分壓電路實驗中的原始數據,拖放一個坐標軸控件用來放置分壓電路實驗中不同 K值的曲線,拖放一個 pop-up menu控件到工作區,用于對 K值的選取,拖放三個靜態文框到工作區,用來對動態文本框、坐標軸控件和 pop-up menu控件進行說明,拖放一個按鈕控件,當按鈕控件 Push Buttor按下后,GUI將開始運行.我們可以使用幾何位置排列工具對這些控件的位置進行重新排列和調整.
(3)雙擊所選控件,編輯其屬性,主要有 fontname,fontsize,fontweight,string,tag等屬性.編輯三個靜態文本的 fontsize屬性為‘16’,string屬性分別為‘labrate graphic date’、‘K’和‘original date’,其余的屬性為默認值.編輯 pop-up menu的string屬性為‘0.05 0.1 1 2 10’,其余的屬性為默認值.編輯按鈕控件的 fontsize屬性為‘16’,string屬性為‘開始’,其余屬性為默認值.
(4)運行 GUI程序,在自動生成的 M-file中 添加 Push Buttor按鈕控件的 Callback回調 函數如下[1-6]所示:
x0=0:0.2:1;
U0=numeric(get(handles.u0,'string'));
k=get(handles.popupmenu1,'Value');
x=0:0.01:1;
Umax=10;
u=interp1(x0,U0,x,'spline');
switch k
case 1
hold on
k=0.05
U=Umax.*k.*x./(k+x-x.^2);
plot(x0,U0,'kp',x,U,'b.',x,u,'m-','LineWidth',3,'MarkerSize', 6);
gtext('k=0.05');
case 2
hold on
k=0.1
U=Umax.*k.*x./(k+x-x.^2)
plot(x0,U0,'kp',x,U,'b.',x,u,'m-','LineWidth',3,'MarkerSize',6);
gtext('k=0.1');
case 3
hold on
k=1
U=Umax.*k.*x./(k+x-x.^2)
plot(x0,U0,'kp',x,U,'b.',x,u,'m-','LineWidth',3,'Marker-Size',6);
gtext('k=1');
case 4
hold on
k=2
U=Umax.*k.*x./(k+x-x.^2)
plot(x0,U0,'kp',x,U,'b.',x,u,'m-','LineWidth',3,'Marker-Size',6);
gtext('k=2');
case 5
hold on
k=10
U=Umax.*k.*x./(k+x-x.^2)
plot(x0,U0,'kp',x,U,'b.',x,i,'m-','LineWidth',3,'MarkerSize', 6);
gtext('k=10');
end
legend('原始數據 ','理論曲線 ','實驗曲線 ')
(5)運行 M-file,出現分壓電路 GUI界面如圖三所示,點擊 pop-up menu控件的下拉三角,從中選取不同的 K值,在原始數據處的動態文本框中輸入分壓電路實驗數據,點擊 Push Buttor按鈕控件,即可在坐標軸控件中觀察到分壓電路在不同的K值下的特性曲線.

圖3 分壓電路GUI界面
MATLAB不僅有強大的計算功能,還有很強的圖形顯示功能.利用這些特性及 GUI功能可以實現交互式實驗數據處理.圖形用戶界面的設計確定了應用程序的主要框架和基本功能,完成了窗口、圖標、按鈕等用戶界面,軟件開發者只需在由軟件開發工具自動生成的程序代碼中添加自己的運算或控制代碼,就可以完成自己的設計.本文利用 MATLAB設計了基于 GUI的實驗處理方法,展示了方便靈活的數據輸入和結果圖形輸出效果,開發設計出了具有良好界面的交互處理實驗系統.
〔1〕賈起民,鄭永令,陳暨耀.電磁學[M].北京:高等教育出版社,2001.
〔2〕孫福玉,韓偉,等.MATLAB程序設計教程[M].遠方出版社,2006.
〔3〕彭芳麟.數學物理方程的MATLAB解法與可視化[M].北京:清華大學出版社,2004.
〔4〕李顯龍.MATLAB界面設計與編譯技巧[M].北京:電子工業出版社,2006.225-283.
〔5〕楊述武.普通物理實驗(二、電磁學部分)[M].北京:高等教育出版社,2001.
〔6〕吳越華,馮昊.基于Matlab圖形用戶界面的對話框設計的應用[J].福建電腦,2003(5).
O4-39
A
1673-260X(2014)08-0007-02