曹万苍, 王中文, 孙福玉
(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