论文部分内容阅读
摘要:本文简要介绍了MATLAB Web Server及其相关技术,以杨氏双缝干涉实验为例,介绍了运用MATLAB Web Server相结合建立光学网络虚拟实验平台的过程,并通过计算机模拟观察实验结果。
关键词:MATLAB Web Server;杨氏双缝干涉;虚拟实验;仿真
中图分类号:TP393文献标识码:A文章编号:1009-3044(2007)12-21720-02
Constructing of Web-based Virtual Optical Laboratory Based on Matlab Web
HAN Zhi-nai, LI Ling-yun
(Department of Physics Nanjing Xiaozhuang College, Nanjing 210017, China)
Abstract:Taking Young's double-slot interference experiment as an example, this paper introduces briefly MATLAB Web Server and correlative technology, presents a process to establish virtual optical lab using MATLAB Web Server. Some results are studied by computers simulation.
Key words:MATLAB Web Server; Young's double-slot interference; virtual lab; simulation
1 引言
光學实验内容比较抽象,如不借助实验,学生很难理解实验原理和过程。传统学校教育中光学实验的进行一般要稳定的环境、高精密的仪器,在实验进行中,往往很难调试到理想的状态。而远程教育中的实验教学由于学生与教育机构存在空间上的分离,一直是传统远程教育的难点,成为制约远程教育质量的一个重要因素。随着计算机技术、网络技术和仿真技术的发展,网络虚拟实验平台的构建已经成为可能。通过网络环境实施光学虚拟实验,能够拓宽信息渠道与流量,扩大了实践活动的范围,不仅为学校实验教学提供了辅助教学手段,而且为远程教育中的实验教学增加了活力。通过计算机仿真光学实验,配合理论课的讲解,把光学课程涉及的现象展示在学生面前,能够加深学生对光学内容的理解。同时学生可以根据对光学原理和规律的理解,自己设置仿真实验中的可控参数,探索和发现光学世界的奥秘,调动学习的积极性。
MATLAB是美国Mathworks公司80年代开始推出的一种简便的工程计算语言。它强大的矩阵处理与运算功能、丰富的图形绘制能力深受用户的青睐,其应用范围涵盖了当今几乎所有的工业应用与科学研究领域。MATLAB提供了具有网络功能的核心工具包MATLAB Web Server,可以通过HTTP协议,在安装了Web服务器的主机上提供MATLAB计算的远程服务。利用MATLAB Web Server,将MATLAB的应用范围扩展到网络上,实现远程的可视化建模和仿真,使开发网络虚拟实验系统成为切实可行。基于MATLAB开发的网络虚拟实验平台由于MATLAB本身功能的强大,在实验数据处理等多方面都表现出极强的优势。
2 MATLAB Web关键技术介绍
2.1 MATLAB的Web技术简介
MATLAB Web Server包含主要包括matlabserver、Matweb和matweb.m文件[1]。Matlabserver用来管理web应用程序和matlab之间的通信。它是一个多线程TCP/IP服务器。可以在matweb.conf中配置到任何合法的TCP/IP端口。Matlabserver通过调用matweb.m来处理网页中隐含字段mlmfile所指定的M文件,在Web网页、MATLAB、M文件三者之间建立联系。Matweb是matlabserver的TCP/IP客户端,它使用CGI方式从HTML文件中将输入的实验数据传递到matlabserver中执行。matweb.m是要调用的matlab的应用程序。
MATLAB Web Server的核心是matweb.exe,负责解释客户机通过html页面发送的请求,转换为运行MATLAB应用程序所需要的参数,接着启动一个MATLAB进程,并将指定的MATLAB应用程序及其参数传递给该进程进行计算。计算完毕后,MATLAB程序还要负责将计算结果以html页面的方式,通过matweb输出给客户端的浏览器[2]。MATLAB Web Server的原理结构如图1所示。
2.2 MATLAB Web Server配置
2.2.1 服务器配置
服务器要提供WWW服务,就必须有一个传统的Web服务器,如IIS服务器或Apache Web Server。本文以微软公司的IIS架构Web服务器,在IIS管理器中新建Web站点,并在该站点建立“cgi-bin”和“icons”两个虚拟目录。“cgi-bin”用来存放CGI文件(如Matlab.exe、Matlabserver.exe),“icons”用于存放Matlab文件生成的图片文件和应用程序所需的图片文件,其他的HTML文件和M文件放在根目录下。
2.2.2 建立并设置Matlab配置文件
在新建Web站点的根目录下,建立Matlab配置文件Matweb.conf和Matlabserver配置文件Matlabserver.conf,并对其进行配置。Matweb.conf的内容如下:
[sflab]
mlserver=10.1.73.33
mldir=e:/sflab
其中,sflab是MATLAB应用程序名,mlserver设置Matlabserver服务器的IP地址,mldir是设置MATLAB应用的工作目录。Matwebserver.conf的内容包括两部分:端口号p,可同时并发的最大线程数m。
3 杨氏双缝干涉实验的实例构建
杨氏双缝干涉实验是利用分波前法获得相干光束的典型例子。实验示意图如图2所示,单色光通过两个窄缝s1,s2射向屏幕,相当于位置不同的两个同频率同相位的光源向屏幕照射的叠合,由于到达屏幕各点的距离不同引起相位差,叠合的结果是在有的点加强,在有的点抵消,造成干涉现象[3]。
图2 双缝干涉图
3.1 MATLAB Web应用程序的实现
本网络虚拟实验平台的浏览器端采用的是框架结构,窗口左侧是参数输入部分,右侧是实验结果部分。
(1)输入网页shuangfeng-1.htm部分代码
请输入初始参数:
(2)输出网页shuangfeng-2.htm部分代码
仿真结果为:
变量GraphFileName的值是一个MATLAB定义的变量,用函数htmlrep可以对其进行改变。
(3)MATLAB应用文件sflab.m部分代码
function retstr=sflab(instruct)
retstr = char('');
mlid=getfield(instruct,'mlid');
cd(instruct.mldir);
bochang=str2double(instruct.bochang); %获得网页上输入的波长值
a=str2double(instruct.a); %獲得网页上输入的两个缝之间的距离
d=str2double(instruct.d); %获得网页上输入的屏幕与缝之间的距离
wscleanup('icons/ml*sf.jpeg',1,'icons/');
f=figure('visible','off');
ym=5*bochang*d/a;xs=ym; %设定光屏范围
n=101;
ys=linspace(-ym,ym,n);
for i=1:n
r1=sqrt((ys(i)-a/2).^2+d^2); %缝1到光屏上任意一点距离
r2=sqrt((ys(i)+a/2).^2+d^2); %缝2到光屏上任意一点距离
phi=2*pi*(r2-r1)/bochang;%相位差
B(i,:)=4*cos(phi/2).^2;
end
N=255;
Br=(B/4.0)*N;
subplot(1,2,1)
image(xs,ys,Br); %画干涉条纹
colormap(gray(N));
subplot(1,2,2)
plot(B,ys); %画出光强变化曲线
xlabel('x');ylabel('y');title('x,y相图');
pos=get(gcf,'position');
set(gcf,'position',pos,'PaperPosition',[.25,.25,20,15]); %设置图片大小
drawnow;
s.GraphFileName=sprintf('icons/%ssf.jpeg',instruct.mlid); %设置图片名
wsprintjpeg(f,s.GraphFileName);
s.GraphFileName=sprintf('/icons/%ssf.jpeg',instruct.mlid); %设置图片路径
close all;
templatefile = which('shuangfeng-2.htm');%指定输出HTML文件
retstr = htmlrep(s, templatefile);
3.2 实验结果分析
图3 单色光的干涉条纹图
本实验平台通过在浏览器端对实验参数波长、两缝之间的距离以及屏幕与缝之间的距离的调节,观察光的干涉现象。当波长=0.0000005,两缝之间的距离=0.0017,屏幕与缝之间的距离=1时,得出实验结果如图3所示。其左图为光屏上的干涉条纹图,右图为光屏上沿y轴方向光强的变化曲线。从图3中可知,干涉条纹是以图2中水平线OO'对称,沿上下两侧交替,等距离排列。
4 结束语
网络虚拟实验可以作为课堂实验教学的补充,为教师进行实验教学提供了新的辅助工具,便于学生对实验内容的预习、复习和自学。同时网络虚拟实验为远程教育中实验教学的开展注入了新的活力,是实验教学发展的重要方向。
基于MATLAB的网络虚拟实验平台主要是使用MATLAB Web Server组件构建,使用B/S结构,服务器端接受客户端发送的实验请求,分析和处理实验参数,经过计算模拟最终将结果返回客户端。整个系统不涉及具体的实验仪器硬件设备,浏览器端也无需安装实验运行所需的庞大MATLAB软件。基于MATLAB Web的网络虚拟实验平台,不但充分发挥了Internet和MATLAB各自的优势,提高了编程的效率,而且实验数据稳定可靠,在学校课堂实验教学与远程教育领域的实验教学中都有着广泛的应用前景。
参考文献:
[1] MATLAB Web Server User's Guide.Available online at:http://www.mathworks.com/access/helpdesk/help/pdf_doc/webserver/webserver.pdf.
[2]何强, 何英. MATLAB扩展编程[M]. 北京:清华大学出版社,2002:73-85.
[3]胡守信, 李柏年. 基于MATLAB的数学实验[M].北京:科学出版社,2004:139-141.
[4]王宏. MATLAB的Web应用和开发[J]. 计算机应用,2001,21(3).
“本文中所涉及到的图表、注解、公式等内容请以PDF格式阅读原文。”
关键词:MATLAB Web Server;杨氏双缝干涉;虚拟实验;仿真
中图分类号:TP393文献标识码:A文章编号:1009-3044(2007)12-21720-02
Constructing of Web-based Virtual Optical Laboratory Based on Matlab Web
HAN Zhi-nai, LI Ling-yun
(Department of Physics Nanjing Xiaozhuang College, Nanjing 210017, China)
Abstract:Taking Young's double-slot interference experiment as an example, this paper introduces briefly MATLAB Web Server and correlative technology, presents a process to establish virtual optical lab using MATLAB Web Server. Some results are studied by computers simulation.
Key words:MATLAB Web Server; Young's double-slot interference; virtual lab; simulation
1 引言
光學实验内容比较抽象,如不借助实验,学生很难理解实验原理和过程。传统学校教育中光学实验的进行一般要稳定的环境、高精密的仪器,在实验进行中,往往很难调试到理想的状态。而远程教育中的实验教学由于学生与教育机构存在空间上的分离,一直是传统远程教育的难点,成为制约远程教育质量的一个重要因素。随着计算机技术、网络技术和仿真技术的发展,网络虚拟实验平台的构建已经成为可能。通过网络环境实施光学虚拟实验,能够拓宽信息渠道与流量,扩大了实践活动的范围,不仅为学校实验教学提供了辅助教学手段,而且为远程教育中的实验教学增加了活力。通过计算机仿真光学实验,配合理论课的讲解,把光学课程涉及的现象展示在学生面前,能够加深学生对光学内容的理解。同时学生可以根据对光学原理和规律的理解,自己设置仿真实验中的可控参数,探索和发现光学世界的奥秘,调动学习的积极性。
MATLAB是美国Mathworks公司80年代开始推出的一种简便的工程计算语言。它强大的矩阵处理与运算功能、丰富的图形绘制能力深受用户的青睐,其应用范围涵盖了当今几乎所有的工业应用与科学研究领域。MATLAB提供了具有网络功能的核心工具包MATLAB Web Server,可以通过HTTP协议,在安装了Web服务器的主机上提供MATLAB计算的远程服务。利用MATLAB Web Server,将MATLAB的应用范围扩展到网络上,实现远程的可视化建模和仿真,使开发网络虚拟实验系统成为切实可行。基于MATLAB开发的网络虚拟实验平台由于MATLAB本身功能的强大,在实验数据处理等多方面都表现出极强的优势。
2 MATLAB Web关键技术介绍
2.1 MATLAB的Web技术简介
MATLAB Web Server包含主要包括matlabserver、Matweb和matweb.m文件[1]。Matlabserver用来管理web应用程序和matlab之间的通信。它是一个多线程TCP/IP服务器。可以在matweb.conf中配置到任何合法的TCP/IP端口。Matlabserver通过调用matweb.m来处理网页中隐含字段mlmfile所指定的M文件,在Web网页、MATLAB、M文件三者之间建立联系。Matweb是matlabserver的TCP/IP客户端,它使用CGI方式从HTML文件中将输入的实验数据传递到matlabserver中执行。matweb.m是要调用的matlab的应用程序。
MATLAB Web Server的核心是matweb.exe,负责解释客户机通过html页面发送的请求,转换为运行MATLAB应用程序所需要的参数,接着启动一个MATLAB进程,并将指定的MATLAB应用程序及其参数传递给该进程进行计算。计算完毕后,MATLAB程序还要负责将计算结果以html页面的方式,通过matweb输出给客户端的浏览器[2]。MATLAB Web Server的原理结构如图1所示。
2.2 MATLAB Web Server配置
2.2.1 服务器配置
服务器要提供WWW服务,就必须有一个传统的Web服务器,如IIS服务器或Apache Web Server。本文以微软公司的IIS架构Web服务器,在IIS管理器中新建Web站点,并在该站点建立“cgi-bin”和“icons”两个虚拟目录。“cgi-bin”用来存放CGI文件(如Matlab.exe、Matlabserver.exe),“icons”用于存放Matlab文件生成的图片文件和应用程序所需的图片文件,其他的HTML文件和M文件放在根目录下。
2.2.2 建立并设置Matlab配置文件
在新建Web站点的根目录下,建立Matlab配置文件Matweb.conf和Matlabserver配置文件Matlabserver.conf,并对其进行配置。Matweb.conf的内容如下:
[sflab]
mlserver=10.1.73.33
mldir=e:/sflab
其中,sflab是MATLAB应用程序名,mlserver设置Matlabserver服务器的IP地址,mldir是设置MATLAB应用的工作目录。Matwebserver.conf的内容包括两部分:端口号p,可同时并发的最大线程数m。
3 杨氏双缝干涉实验的实例构建
杨氏双缝干涉实验是利用分波前法获得相干光束的典型例子。实验示意图如图2所示,单色光通过两个窄缝s1,s2射向屏幕,相当于位置不同的两个同频率同相位的光源向屏幕照射的叠合,由于到达屏幕各点的距离不同引起相位差,叠合的结果是在有的点加强,在有的点抵消,造成干涉现象[3]。
图2 双缝干涉图
3.1 MATLAB Web应用程序的实现
本网络虚拟实验平台的浏览器端采用的是框架结构,窗口左侧是参数输入部分,右侧是实验结果部分。
(1)输入网页shuangfeng-1.htm部分代码
请输入初始参数:
(2)输出网页shuangfeng-2.htm部分代码
仿真结果为:
变量GraphFileName的值是一个MATLAB定义的变量,用函数htmlrep可以对其进行改变。
(3)MATLAB应用文件sflab.m部分代码
function retstr=sflab(instruct)
retstr = char('');
mlid=getfield(instruct,'mlid');
cd(instruct.mldir);
bochang=str2double(instruct.bochang); %获得网页上输入的波长值
a=str2double(instruct.a); %獲得网页上输入的两个缝之间的距离
d=str2double(instruct.d); %获得网页上输入的屏幕与缝之间的距离
wscleanup('icons/ml*sf.jpeg',1,'icons/');
f=figure('visible','off');
ym=5*bochang*d/a;xs=ym; %设定光屏范围
n=101;
ys=linspace(-ym,ym,n);
for i=1:n
r1=sqrt((ys(i)-a/2).^2+d^2); %缝1到光屏上任意一点距离
r2=sqrt((ys(i)+a/2).^2+d^2); %缝2到光屏上任意一点距离
phi=2*pi*(r2-r1)/bochang;%相位差
B(i,:)=4*cos(phi/2).^2;
end
N=255;
Br=(B/4.0)*N;
subplot(1,2,1)
image(xs,ys,Br); %画干涉条纹
colormap(gray(N));
subplot(1,2,2)
plot(B,ys); %画出光强变化曲线
xlabel('x');ylabel('y');title('x,y相图');
pos=get(gcf,'position');
set(gcf,'position',pos,'PaperPosition',[.25,.25,20,15]); %设置图片大小
drawnow;
s.GraphFileName=sprintf('icons/%ssf.jpeg',instruct.mlid); %设置图片名
wsprintjpeg(f,s.GraphFileName);
s.GraphFileName=sprintf('/icons/%ssf.jpeg',instruct.mlid); %设置图片路径
close all;
templatefile = which('shuangfeng-2.htm');%指定输出HTML文件
retstr = htmlrep(s, templatefile);
3.2 实验结果分析
图3 单色光的干涉条纹图
本实验平台通过在浏览器端对实验参数波长、两缝之间的距离以及屏幕与缝之间的距离的调节,观察光的干涉现象。当波长=0.0000005,两缝之间的距离=0.0017,屏幕与缝之间的距离=1时,得出实验结果如图3所示。其左图为光屏上的干涉条纹图,右图为光屏上沿y轴方向光强的变化曲线。从图3中可知,干涉条纹是以图2中水平线OO'对称,沿上下两侧交替,等距离排列。
4 结束语
网络虚拟实验可以作为课堂实验教学的补充,为教师进行实验教学提供了新的辅助工具,便于学生对实验内容的预习、复习和自学。同时网络虚拟实验为远程教育中实验教学的开展注入了新的活力,是实验教学发展的重要方向。
基于MATLAB的网络虚拟实验平台主要是使用MATLAB Web Server组件构建,使用B/S结构,服务器端接受客户端发送的实验请求,分析和处理实验参数,经过计算模拟最终将结果返回客户端。整个系统不涉及具体的实验仪器硬件设备,浏览器端也无需安装实验运行所需的庞大MATLAB软件。基于MATLAB Web的网络虚拟实验平台,不但充分发挥了Internet和MATLAB各自的优势,提高了编程的效率,而且实验数据稳定可靠,在学校课堂实验教学与远程教育领域的实验教学中都有着广泛的应用前景。
参考文献:
[1] MATLAB Web Server User's Guide.Available online at:http://www.mathworks.com/access/helpdesk/help/pdf_doc/webserver/webserver.pdf.
[2]何强, 何英. MATLAB扩展编程[M]. 北京:清华大学出版社,2002:73-85.
[3]胡守信, 李柏年. 基于MATLAB的数学实验[M].北京:科学出版社,2004:139-141.
[4]王宏. MATLAB的Web应用和开发[J]. 计算机应用,2001,21(3).
“本文中所涉及到的图表、注解、公式等内容请以PDF格式阅读原文。”