matlab ser,matlab web server(转)

matlab作为最常用的数值计算软件,功能强大使用方便,但,也有不少的缺点。

首先,matlab的安装相当的麻烦。Matlab是由10万的小的文本文件,以及少量其他的软件组成,在安装时由于经常在小文件之间停顿,使得安装相当的麻烦。根据测试,一般配置的个人计算机,在安装matlab

7.0 的时候,大概要40分钟。而且,由于bug的存在,经常会出现在换盘时安装程序没有响应。这样,安装往往要花个两三个小时。

没有经过处理的matlab程序只能单机使用,不能共享使用。如果要是使用正版的matlab软件,每个电脑都安装上matlab必然要多很多的成本。有时,我们也许临时要计算一个问题,但,你的电脑还没有安装matlab,这样的话你用传统的单机的matlab无法实现随时,随地的使用。

Matlab内部的图形用户界面编程复杂,灵活性很差。

但,只要改变一点点,上面的缺点就可以弥补。

实现,matlab随时,随地,方便使用的技术是web技术和桌面软件技术的完美结合。这种被称为“matlab web

server”的技术的原理图如下:

500){this.resized=true;this.style.width=500;}">=550)

window.open('http://www.somyso.com/attachment/Mon_0703/3_IXDHFjXZrXbfutI.gif');"

src="http://www.somyso.com/attachment/Mon_0703/3_IXDHFjXZrXbfutI.gif"

οnlοad="if(this.width>'550')this.width='550';if(this.height>'440')this.height='440';"

border=0>

虚线框内的部分就是一般的web 服务器技术。Web

服务器通过CGI扩展和matlab服务相联系,同时,matlab服务和matlab程序的内核相联系。使用web服务器,我们就可以随时随地的使用matlab。当然,现在,我们仅仅可以使用我们已经在网站上写好的代码,如果远程要编写新的程序,那么,我们要建立一个ftp服务器,实时更新网站代码。如果,要变成多用户使用,可以用http上传的形式,这样网站编程上就复杂一些。

“MATLAB Web

Server通过采用标准的HTML文档和表单,允许工程人员将MATLAB/Simulink的应用程序通过Internet进行发布。

HTML

文档作为MATLAB应用的用户界面,通过鼠标点击来访问Matlab应用程序。通过这种方法,使用此项应用的用户不需要学会MATLAB的使用,而且

MATLAB不需要在客户机上运行。”更详细的介绍可以参考MATLAB----Web----Sever——开发基于WEB的MATLAB/Simulink应用和matlab的帮助文档。

我的这个项目的重点有两个:

一个是配置服务器的问题。

一个是编制基于网络的matlab程序的问题。

matlab本身提供了一些Sample,但并不是马上可以运行的,需要对服务器进行一定的配置,以windows下的IIS6.0为例,matlab

7.0 平台为例,说明具体的解题步骤。

首先,创建一个新的网站,根目录为wsdemos,这个目录原来在\toolbox\webserver下,也可以把它拷贝到其他地方。Web服务器的具体设置如下:

1.

在wsdemos下创建cgi-bin目录,虚拟或物理的都可以,将matweb.exe和matweb.conf拷贝到里面,并设定此目录权限为可以执行脚本和应用程序。

2.

在IIS设置的web服务扩展中增加一个允许的web服务扩展,指定要求的文件为matweb.exe,扩展名随便取一个,也就是设置CGI的执行权限,matlabserver是通过CGI方式工作的,为了让IIS使用CGI程序,必须打开CGI权限。

3.

在wsdemos下创建icons目录,虚拟或物理的都可以,将wsdemos目录下的图片文件移入其中,并设定此目录拥有写权限。

4. 在网站的默认内容文档中增加index.html。

配置文件matweb.conf的具体设置

1.

安装程序在/Webserver目录下创建一个matlabserver.conf文件,matlabserver.conf

的设置内容分为两部分:端口号p;可同时并发运行的最大线程数m。安装后,该文件中只有一行: -m 1,

即表示端口号为默认值8888,同时并发的最大线程数为1,可以根据需要改变其数目。若端口号改变了,则matweb.conf配置文件中设置的端口号也要相应改变,使两者端口一致。

2. 每增加一个MATLAB

Web应用,都需要在matweb.conf中增加一项配置。在matweb.conf中增加如下内容:

[文件名]

mlserver=169.254.112.207

mldir=c:/matlab/toolbox/webserver/wsdemos

注意修改matweb.conf里面的路径设置是物理目录。

常见出错信息:

提交表单后出现“HTTP 错误 404 -

文件或目录未找到”,地址栏显示http://localhost/cgi-bin/matweb.exe,检查目录的设置,matlab.exe文件有没有烤过来。

在运行peaksplot,stock和softball这几个例子的时候出现“The specified CGI application

misbehaved by not returning a complete set of HTTP

headers”,这是由于这几个sample往icons目录写入图片文件失败,检查目录的写入权限。

用这个模式可以发布一些简单的matlab应用程序,但是对交互性要求比较高的则较难实现,这是受到了html的限制。在人数较多时,程序的运行速度就不是很快,这是因为程序的线程有限,同时计算量也是很大的。

还有一个是编制基于网络的matlab程序的问题。

编制MATLAB的Web应用程序的关键问题编制用于MATLAB Web

server的程序,关键在于解决两个问题:

MATLAB程序如何通过HTML页面获取输人参数MATLAB程序如何生成包含输出数据和图片的HTML件。这两个问题的解决可以参考matlab/toolbox/webserver/wsdemos目录下的4个模板文件,其中要点如下。

1. 通过HTML输入参数

参数的提交是通过HTML页面中的表单来完成的,形式如

=/cgi-bin/matweb. exe

method=post>。表单中一个重要和必须的输人变量是mlmfile,是标明处理该表单的MATLAB程序名,其属性为隐含,例如:<

input type=hidden name=mlmfile value = mymatlabfile

>,其中value值为接受该表单参数的MATLAB程序。

2. MATLAB程序对参数的接收

MATLAB Web

Server应用程序都要定义成函数的形式,入口一般定义为:function返回值=函数名(参数),这里应注意,函数名应该和程序文件名相同。这里的参数结构是matweb创建的,它包含HTML表单提交的所有值:mlmfile,submit,

mlid, mldir及其他参数。参数含义:

Mlmfile一接受该表单参数的MATLAB程序。

mlid 一进程的唯一标识。

mldir 一MATLAB程序的路径。

MATLAB程序生成HTML文件

1. 对输出变童的处理

MATLAB程序将输人变量进行处理后,计算得到结果,将其写入结构outstruct中。比如计算结果z的保存用如下语法:outstruct.z=z;结构变量outstruct包含所有输出变量,每个变量都用变量名作为一个成员。由于MATLAB的struct数据结构十分灵活,这一语法适合于任何数据类型。

2. 用MATLAB程序生成用于输出的HTML文件

调用MATLAB的子程序HTMLrep,生成用于输出的HTML文件。语法:函数返回值二HTMLrep (

outstruct,temlatefile),其中outstruct是包含所有输出参数的struct结构;templatefile是一个预先编制好的HTML模板文件。Htmlrep执行的具体步骤:把。utstruct中的值传给HTML模板文件,然后把HTML进行转换,转换后的HTML是一个纯文本文件,其内容通过函数返回值以字符串的形式返回。这样,网关程序matweb就根据函数返回值的内容生成一个HTML文件,直接送至客户端浏览器。

3. 预先编制的HTML动态模板文件

该HTML文件,包含页面布局、文字说明等信息,其中用到MATLAB程序输出变量的地方都用$var_

name$的形式表示。上述HTMLrep的第一项功能实际上就是将$var_name $形式的变量转换为实际数据。

4 图片的输出问题

上面提到函数返回值是一个字符串,字符串本身是不能包含图片的。要解决这一问题,与标准的HTML一样,输出的动态HTML文件中,要事先写好

>标记,格式为< img src="$pic

$">,而图片的文件名也作为输出变量保存在outstruct中。图片的生成由MATLAB程序完成。在MATLAB程序中,一个完整图片主要生成过程如下:

① 建立一个隐含的空白图片,f为其句柄。

② 实际的绘图命令,如plot, mesh,

surf等;立即绘制(drawnow)。

由MATLAB的sprint函数生成文件名,得到的filename为:MATLAB进程ID (mlid

)+进程中的图片名+-jpg

④ 由MATLAB的wsprintjpeg函数生成图片文件

wsprintjpeg(f, fname )。

图片文件名为输出变量给outstruct结构中文件名变量赋值;关闭图片。这样生成的图片有时较大,不适合在浏览器中浏览,可以在生成图片之前使用set()命令调整图片的大小。如果希望采用其他格式,可以尝试使用MATLAB的imread和imwrite命令改变图片格式。

应用实例

本实例是一个三角函数的演示实例,由输人HTML文件trifunc_in.

htm,MATLAB程序ml_trifunc. m

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值