📄 基于matlab的web应用开发.htm
字号:
<P class=a14><IMG src="基于MatLab的Web应用开发.files/c05_4t1.jpg">
<P class=a14>图1MatLab Web应用原理结构图
<P class=a14>由图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来实现。下面用实例的方式来说明具体的设置过程。
<P class=a14>应用实例开发
<P class=a14>下面是以通过输入函数自变量的变化范围、步长及函数后,借助MatLab Web应用实现函数作图的实例来说明开发MatLab
Web应用的基本步骤。
<P class=a14>1.请求MatLab Web服务的HTML文档
<P class=a14>请求MatLab
Web服务的HTML文档主要完成两方面的功能,一方面是接收浏览器用户的输入,这与一般的Web应用的处理方法相同,可以通过HTML的表单来实现;另一方面是设置一个特殊的标志,将该请求重定向到MatLab
Web服务代理进行处理,它的实现方法也与一般的CGI程序调用方法相同。下面是一个简单的实例代码(文件名:func.htm)。
<P class=a14><html><title>函数作图演示</title><body>
<P class=a14><center><h1>函数作图演示</h1></center>
<P
class=a14><h3>请注意:加法用记号“plus”,而减法用记号“minus”</h3><table>
<P class=a14><form action=“/cgi-bin/matweb.exe” method=“POST”
target=“outputwindow”>
<P class=a14><input type=“hidden” name=“mlmfile” value=“functest”>
<P class=a14><tr><td>Start x: </td>
<P class=a14>< td>< input type=“text” size =“5” value=0
name=“startx”>
<P class=a14>< /td >< /tr >< tr >< td >Step x:<
/td >
<P class=a14>< td> < input type=“text” size =“5” value=0.001
name=“stepx”>< /td ></tr >< tr >< td > End
x:< /td >
<P class=a14>< td > <input type=“text” size =“5” value=10
name=“endx”>< /td >< /tr >< tr >< td >
Function:< /td >
<P class=a14>< td > <input type=“text” size =“100” value=“sin(x)”
name=“funcname”></td></tr>
<P class=a14><tr><td> <input type=“submit” name=“Submit”
<P class=a14>value=“Submit”></td>
<P class=a14>< td > <input type=“reset” name=“reset”
value=“reset”></td></tr></form></table></body></html>
<P
class=a14>该文件中最关键的部分是代码中用斜体标明的两行代码,即Form标记的Action属性的设置及隐输入框mlmfile(参数名固定),其值为将在MatLab
Web服务程序中运行的m文件的文件名。
<P
class=a14>另外,为了方便使用,可以将浏览器窗口分为上下两个部分,上部分用于输入,下部分用于显示运行结果或图形。该框架页面(文件名为funcexample.htm)的HTML代码如下:
<P class=a14><html><title>函数功能演示</title>
<P class=a14><frameset rows=“300,*" border=0 frameborder=“0">
<P class=a14><frame scrolling=auto src=“func.htm” name=“topframe”
marginwidth=10 marginheight=1 frameborder=0>
<P class=a14><frame scrolling=auto src=“dummy.html” marginwidth=0
marginheight=0 name=“outputwindow” frameborder=0>
<P class=a14></frameset></html>
<P class=a14>2.MatLab Web应用的设置
<P class=a14>MatLab Web应用的设置工作主要是对MatLab Web服务代理的设置,即每增加一个MatLab
Web应用,都需要在代理服务的配置文件matweb.conf中增加一项配置。如上面的输入html表单中的m文件的文件名为functest,相应地,需要在matweb.conf中增加下面的内容:
<P class=a14>[functest]
<P class=a14>mlserver=192.1.2.1
<P class=a14>mldir=e:/inetpub/wwwroot/icons
<P class=a14>mldir1=192.1.2.1
<P class=a14>其中mlserver=192.1.2.1指明MatLab
Web服务程序所在机器的IP地址,而下面两行主要是MatLab工作目录的设置及应用中可能用到的全局变量的设置。
<P class=a14>3.MatLab应用程序的开发
<P class=a14>MatLab应用程序主要具有以下3个方面的功能:
<P class=a14>接收输入HTML表单中的输入值;
<P class=a14>调用MatLab中内置的各种函数进行科学计算或作图;
<P class=a14>将计算结果或生成的图形通过适当的方法输出到HTML页面,并将这些结果返回给最终用户。
<P class=a14>部分代码如下(应用函数名为:functest.m):
<P class=a14>Function PageString = functest(InputSet, OutFile)
<P class=a14>cd(InputSet.mldir);
<P class=a14>% 清除1个小时以前的旧图形
<P class=a14>wscleanup(‘func*.jpeg’, 1);
<P class=a14>Fig = figure(‘visible’,‘off’);
<P class=a14>% 接收输入值,并进行转换
<P class=a14>startx = str2double(InputSet.startx);
<P class=a14>stepx = str2double(InputSet.stepx);
<P class=a14>endx = str2double(InputSet.endx);
<P class=a14>x=(startx:stepx:endx);
<P class=a14>S=InputSet.funcname;
<P class=a14>len=length(S);
<P class=a14>for i=1:4:(len-4)
<P class=a14>po=findstr(S,‘plus’);
<P class=a14>if po>0
<P class=a14>S(po)=‘ ’;
<P class=a14>S(po+1)=‘+’;
<P class=a14>S(po+2)=‘ ’;
<P class=a14>S(po+3)=‘ ’;
<P class=a14>end
<P class=a14>end
<P class=a14>for i=1:5:(len-5)
<P class=a14>po=findstr(S,‘minus’);
<P class=a14>if po>0
<P class=a14>S(po)=‘ ’;
<P class=a14>S(po+1)=‘ ’;
<P class=a14>S(po+2)=‘-’;
<P class=a14>S(po+3)=‘ ’;
<P class=a14>S(po+4)=‘ ’;
<P class=a14>end
<P class=a14>end
<P class=a14>% 计算或作图
<P class=a14>plot(x,eval(S));
<P class=a14>ylabel(‘Function Test’);
<P class=a14>title([‘******函数:’ S ‘的图像*******’]);
<P class=a14>pos = get(gcf, ‘position’);
<P class=a14>pos(3) = 380;
<P class=a14>pos(4) = 310;
<P class=a14>set(gcf,‘Position’, pos,‘PaperPosition’,[.25 .25 4 3]);
<P class=a14>PlotFile = sprintf(‘func%s.jpeg’, InputSet.mlid);
<P class=a14>drawnow;
<P class=a14>wsprintjpeg(Fig, PlotFile);
<P class=a14>close(Fig);
<P class=a14>% 对输出模板进行处理,生成输出HTML文件
<P class=a14>templatefile = which(‘functempate.htm’);
<P class=a14>if ( exist(‘OutFile’,‘var’)== 1 )
<P class=a14>s.GraphFileName = [ PlotFile];
<P class=a14>PageString = htmlrep(s, templatefile, OutFile);
<P class=a14>else
<P class=a14>s.GraphFileName =
[sprintf(‘http://%s/icons/’,InputSet.mldir1)PlotFile];
<P class=a14>PageString = htmlrep(s, templatefile);
<P class=a14>end
<P class=a14>4.显示运行结果的HTML模板的开发
<P
class=a14>在上面的MatLab应用程序中,最后的结果输出部分调用了用于输出的HTML模板functemplate.htm,下面是该文件的部分代码,其中最重要的部分是标记“$......$”中包含的变量部分,在MatLab应用程序中通过函数htmlrep,使用输出结构中相应的变量值对这些标记进行替换。
<P class=a14><html><body bgcolor=“#FFFFFF”>
<P class=a14><p>&nbsp</p><p align=“center”>
<P class=a14><img border=0
src=“$GraphFileName$”></p></body></html>
</P></TR></TBODY></TABLE>
<TABLE align=center width=680>
<TBODY>
<TR>
<TD>
<HR color=#f46240 SIZE=1 width=660>
</TD></TR></TBODY></TABLE><BR>
<P align=center>Copyright(C) ccw.com.cn,All rights reserved</P>
<P align=center><B>中国计算机世界出版服务公司版权所有</B></P></CENTER></BODY></HTML>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -