- 积分
- 106
- 注册时间
- 2003-8-29
- 仿真币
-
- 最后登录
- 1970-1-1
|
基于MatLab的Web应用开发
MatLab的含义是矩阵实验室(Matrix Laboratory)。它是MathWorks公司于1982年推出的一套高性能的数值计算和可视化数学软件。它集数值分析、矩阵运算、信号处理和图形显示于一体,构成了一个方便的、界面友好的用户环境。
随着计算机技术与通信技术的发展,Internet/Intranet技术已成为新型信息系统开发的标准平台。本文以实例的方式讨论基于MatLab的科学计算与图形展示功能的Web应用系统的开发过程,说明MatLab Web应用开发的基本实施方法,展示了MatLab在Internet/Intranet环境下的应用。
应用系统原理
通过基于MatLab的Web应用,能使世界各地的人通过Internet将数据发送给MatLab Web服务器,借助MatLab的强大的计算与图形展示功能,获得计算的结果或相应的图形结果。
MatLab的Web应用主要由两部分组成,一部分是MatLab Web服务器,它实际上是一个可执行的应用程序matlabserver.exe,是MatLab应用程序运行的环境;另一部分是Web服务代理,一个可执行程序matweb.exe,它将所有对MatLab的请求重定向到matlabserver.exe进行处理。其原理结构如图1所示:
图1 MatLab Web应用原理结构图
由图1可知,MatLab Web应用必须基于某一标准的Web服务环境,浏览器客户通过TCP/IP协议请求Web服务器中的文档,而MatLab Web服务代理筛选所有的请求,如果是MatLab Web请求,则将其交由MatLab Web服务程序处理,否则由标准的Web服务器进行处理。在设置MatLab Web应用环境时,其中MatLab Web服务代理必须与系统的Web服务器安装在同一台机器上,而与MatLab Web服务程序则可以在同一台机器中,也可在不同的机器中。在具体实现时,还必须对MatLab Web服务代理与MatLab Web服务程序进行适当的配置,这分别通过文件matweb.conf与matlabserver.conf来实现。下面用实例的方式来说明具体的设置过程。
应用实例开发
下面是以通过输入函数自变量的变化范围、步长及函数后,借助MatLab Web应用实现函数作图的实例来说明开发MatLab Web应用的基本步骤。
1.请求MatLab Web服务的HTML文档
请求MatLab Web服务的HTML文档主要完成两方面的功能,一方面是接收浏览器用户的输入,这与一般的Web应用的处理方法相同,可以通过HTML的表单来实现;另一方面是设置一个特殊的标志,将该请求重定向到MatLab Web服务代理进行处理,它的实现方法也与一般的CGI程序调用方法相同。下面是一个简单的实例代码(文件名:func.htm)。
<html><title>函数作图演示</title><body>
<center><h1>函数作图演示</h1></center>
<h3>请注意:加法用记号“plus”,而减法用记号“minus”</h3><table>
<form action=“/cgi-bin/matweb.exe” method=“POST” target=“outputwindow”>
<input type=“hidden” name=“mlmfile” value=“functest”>
<tr><td>Start x: </td>
< td>< input type=“text” size =“5” value=0 name=“startx”>
< /td >< /tr >< tr >< td >Step x:< /td >
< td> < input type=“text” size =“5” value=0.001 name=“stepx”>< /td ></tr >< tr >< td > End x:< /td >
< td > <input type=“text” size =“5” value=10 name=“endx”>< /td >< /tr >< tr >< td > Function:< /td >
< td > <input type=“text” size =“100” value=“sin(x)” name=“funcname”></td></tr>
<tr><td> <input type=“submit” name=“Submit”
value=“Submit”></td>
< td > <input type=“reset” name=“reset” value=“reset”></td></tr></form></table></body></html>
该文件中最关键的部分是代码中用斜体标明的两行代码,即Form标记的Action属性的设置及隐输入框mlmfile(参数名固定),其值为将在MatLab Web服务程序中运行的m文件的文件名。
另外,为了方便使用,可以将浏览器窗口分为上下两个部分,上部分用于输入,下部分用于显示运行结果或图形。该框架页面(文件名为funcexample.htm)的HTML代码如下:
<html><title>函数功能演示</title>
<frameset rows=“300,*" border=0 frameborder=“0">
<frame scrolling=auto src=“func.htm” name=“topframe” marginwidth=10 marginheight=1 frameborder=0>
<frame scrolling=auto src=“dummy.html” marginwidth=0 marginheight=0 name=“outputwindow” frameborder=0>
</frameset></html>
2.MatLab Web应用的设置
MatLab Web应用的设置工作主要是对MatLab Web服务代理的设置,即每增加一个MatLab Web应用,都需要在代理服务的配置文件matweb.conf中增加一项配置。如上面的输入html表单中的m文件的文件名为functest,相应地,需要在matweb.conf中增加下面的内容:
[functest]
mlserver=192.1.2.1
mldir=e:/inetpub/wwwroot/icons
mldir1=192.1.2.1
其中mlserver=192.1.2.1指明MatLab Web服务程序所在机器的IP地址,而下面两行主要是MatLab工作目录的设置及应用中可能用到的全局变量的设置。
3.MatLab应用程序的开发
MatLab应用程序主要具有以下3个方面的功能:
●接收输入HTML表单中的输入值;
●调用MatLab中内置的各种函数进行科学计算或作图;
●将计算结果或生成的图形通过适当的方法输出到HTML页面,并将这些结果返回给最终用户。
部分代码如下(应用函数名为:functest.m):
Function PageString = functest(InputSet, OutFile)
cd(InputSet.mldir);
% 清除1个小时以前的旧图形
wscleanup(‘func*.jpeg’, 1);
Fig = figure(‘visible’,‘off’);
% 接收输入值,并进行转换
startx = str2double(InputSet.startx);
stepx = str2double(InputSet.stepx);
endx = str2double(InputSet.endx);
x=(startx:stepx:endx);
S=InputSet.funcname;
len=length(S);
for i=1:4:(len-4)
po=findstr(S,‘plus’);
if po>0
S(po)=‘ ’;
S(po+1)=‘+’;
S(po+2)=‘ ’;
S(po+3)=‘ ’;
end
end
for i=1:5:(len-5)
po=findstr(S,‘minus’);
if po>0
S(po)=‘ ’;
S(po+1)=‘ ’;
S(po+2)=‘-’;
S(po+3)=‘ ’;
S(po+4)=‘ ’;
end
end
% 计算或作图
plot(x,eval(S));
ylabel(‘Function Test’);
title([‘******函数:’ S ‘的图像*******’]);
pos = get(gcf, ‘position’);
pos(3) = 380;
pos(4) = 310;
set(gcf,‘Position’, pos,‘PaperPosition’,[.25 .25 4 3]);
PlotFile = sprintf(‘func%s.jpeg’, InputSet.mlid);
drawnow;
wsprintjpeg(Fig, PlotFile);
close(Fig);
% 对输出模板进行处理,生成输出HTML文件
templatefile = which(‘functempate.htm’);
if ( exist(‘OutFile’,‘var’)== 1 )
s.GraphFileName = [ PlotFile];
PageString = htmlrep(s, templatefile, OutFile);
else
s.GraphFileName = [sprintf(‘http://%s/icons/’,InputSet.mldir1)PlotFile];
PageString = htmlrep(s, templatefile);
end
4.显示运行结果的HTML模板的开发
在上面的MatLab应用程序中,最后的结果输出部分调用了用于输出的HTML模板functemplate.htm,下面是该文件的部分代码,其中最重要的部分是标记“$......$”中包含的变量部分,在MatLab应用程序中通过函数htmlrep,使用输出结构中相应的变量值对这些标记进行替换。
<html><body bgcolor=“#FFFFFF”>
<p>&nbsp</p><p align=“center”>
<img border=0 src=“$GraphFileName$”></p></body></html> |
评分
-
1
查看全部评分
-
|