展会信息港展会大全

基于Matlab web Server实现混合编程
来源:互联网   发布日期:2011-12-16 20:15:56   浏览:25633次  

导读:1. Matlab web Server 简介 Matlab Web Server可以在WWW环境中开发网络上的应用程序:用户在浏览器上输入数据,提交给服务器上的Matlab,进行计算,把计算结果在浏览器上进行显示。 Matlab Web Server应用包括M文件、HTML和图形。建立Matlab Web Server应用...

1. Matlab web Server 简介

Matlab Web Server可以在WWW环境中开发网络上的应用程序:用户在浏览器上输入数据,提交给服务器上的Matlab,进行计算,把计算结果在浏览器上进行显示。 Matlab Web Server应用包括M文件、HTML和图形。建立Matlab Web Server应用需要以下几部分的工作:

(1) 建立一个向Matlab提交数据的HTML输入文档。

(2) 建立一个显示Matlab计算结果的HTML输出文档。

(3) 建立一个处理输入数据和计算结果的 M文件。

(4) 建立一个测试文件对代码进行测试。

Matlab Web服务器需要运行在TCP/IP网络上。

(1)应用环境:Matlab Web服务器可以适用于类似以下形式的网络上,如下图所示:

基于Matlab web Server实现混合编程

运行要求系统上必须安装TCP/IP网络软件;客户端必须安装浏览器 (Netscape Communicator Release 4.7或者Microsoft Internet Explorer 5.0.。旧的版本也许可以但没有经过测试)。服务器上必须安装了 Web服务器软件(如I I S,Apache等),并且要能运行C G I程序。本人的运行环境是windows xp +Apache.+matlab7.0.+ MyIE2下面就介绍在这个环境下如何安装和配置,实现matlab web server的功能。

2. Apache的安装和配置

(1) Apache简介和获取:

Apache是世界上排名第一的服务器,根据Netcraft所做的调查,世界上百分之五十以上的Web服务器在使用Apache。而且Apache是免费的。

基于Matlab web Server实现混合编程

首先,到www.apache.org 下载安装程序。

http://httpd.apache.org/dist/httpd/binaries/wind32/ 目录下有多种安装文件,在这里编者选择1.3.20版的。

注意:如果读者不能直接连接到国外网站,需要用代理服务器(例如 218.25.251.168 端口 80)。

(2) Apache安装说明:

下载完后即可安装。在安装过程中需要注意的是,出现如下对话框时,如下图示:

基于Matlab web Server实现混合编程

#p#副标题#e#安装程序要求三项都必须填写。如果没有申请域名,(Network Domain)项可随便填,以后也可以在配置文件httpd.conf中修改,主机名(Server Name),填写自己的IP地址也可以。

安装目录为方便起见,选择在C: ,安装完后所有的文件都在c:Apache目录下。(安装目录可以自己选择,无强制要求,下面的介绍均以安装在C盘根目录下为例,若安装到其他目录下,操作是类似的)。

(3) Apache安装完测试:

安装结束后,将文件C:Apachehtdocsindex.html.en 改名为index.html.。 目录c:Apachehtdocs就是WWW服务器的根目录,index.html为首页。在浏览器中输入http://localhost,则出现如下Apache的测试页面,如下图。(如果显示不正常则可能安装有问题)。

基于Matlab web Server实现混合编程

安装成功后,还要对Apache进行一系列的设置。可以参考Apache的联机文档,或者参考http://apache.winet.cn/。下面只对与相关的内容进行说明。

(4) Apache相关设置语法说明:(Windows环境下)

i)DocumentRoot 指令

说明:组成网络上可以观看的主文档树的目录

语法:DocumentRoot 目录路径

系统默认值为DocumentRoot "C:/Apache/htdocs" Apache根据请求定位文件的默认操作是,取出URL路径(即,URL中主机名和端口后面的部分)附加到由DocumentRoot 指定的文件系统路径后面,组成在网上所看见的文件树结构比如说:

DocumentRoot "C:/Apache/htdocs"

假设主机的域名www.myhost.com,于是对于http://www.myhost.com/index.html的访问就会指向C:/Apache/htdocs/index.html

ii) Alias 指令

说明:映射URL到文件系统的特定区域

语法:Alias 虚拟目录 实际目录

Alias指令使文档可以被存储在DocumentRoot以外的本地文件系统中。 以虚拟路径开头的URL可以被映射到以 实际目录开头的本地文件。

例如: Alias /icons/ "C:/Apache/icons/" 对虚拟目录/icons的访问,实际将指向目录C:/Apache/icons/

iii) ScriptAlias 指令

说明:映射一个URL到文件系统并视之为CGI脚本

语法:ScriptAlias 虚拟目录 实际目录

ScriptAlias指令的行为与Alias指令相似.

例子:ScriptAlias /cgi-bin/ "C:/Apache/cgi-bin/"

执行虚拟目录下/cgi-bin/matweb.exe 程序,实际将执行C:/Apache/cgi-bin/matweb.exe

(5) 例子说明:

为了帮助读者学习和操作,本章以matlab自带的例子Peaks Plot Generator 为基础,介绍如何对Apache进行配置。以及在后面将针对该例介绍如何进行matlab web server 编程。

步骤1:

在 C盘根目录下新建文件夹C:testweb

在testweb文件夹中包含了演示项目所需要的文件即:

(a)向matlab提交数据的HTML输入文档。

(b)显示matlab计算结果的HTML输出文档。

(c)处理输入数据和计算结果的 M文件。

(d)测试文件

(e)cgi-bin文件夹

(f)icons 文件夹,放置所需要的图片,包括MATLAB运行过程生成的图片

#p#副标题#e#步骤2:

准备所以相关的文件和程序放置在对应的文件夹中

(1)将本例子中使用到的webpeaks1.html、dummy.html、peaksplot.html 和webpeaks2.html四个HTML文档以及M文件webpeaks.m(在%matlab%toolboxwebserverwsdemos下)复制到目录c:testweb下,其中webpeaks1.html定义了显示的框架,dummy.html为初始显示在框架下半部分的页面,peaksplot.html生成输入界面,webpeaks2生成输出界面;

(2)把%matlab%toolboxwebserverwsdemos下的matweb.conf和 matweb.exe 复制到C:testwebcgi-bin。

(3)把%matlab%toolboxwebserverwsdemos 下的peaks-jr.jpg复制到c:testwebicons下。

(4)把webpeaks1.html 重命名为index.html.

(5)配置Apache相关参数。所有的配置基本上都在文件c:Apacheconfhttpd.conf 中实现。

步骤3:

修改默认根目录:

将默认根目录指向c:testweb

在httpd.conf文件中找到DocumentRoot 项,将”c:Apachehtdocs”改为 “c:/testweb”,如下图所示:

基于Matlab web Server实现混合编程

步骤4:

设置CGI

MATLAB Web Server 是通过CGI方式工作的,为了让Apache使用CGI(这里是matweb.ext)程序,必须为cgi-bin目录打开特定的特权

在配置文件中找到ScriptAlias /cgi-bin/ "C:/Apache/cgi-bin/" 这一项,如下图示:

基于Matlab web Server实现混合编程

将其修改为

ScriptAlias /cgi-bin/ "C:/testweb/cgi-bin/",以后对/cgi-bin/中文件的访问实际上是对c:/testweb/cgi-bin/中的文件进行访问。同时将

中的修改为

Options None 改为Options ExecCGI。表示允许在C:/testweb/cgi-bin目录下运行CGI程序。修改的结果如下图示:

基于Matlab web Server实现混合编程

步骤5:

设置icons目录:

对icons目录的设置不是每个应用项目都需要的,一般来说,对于需要调用或者生成图片的应用项目,为了方便管理,将所有图片放置在同个文件夹(如icons文件夹)中。MATLAB Web Server 的演示程序中有需要生成图片和调用图片,所以对icons进行设置。

在配置文件httpd.conf中找到以下内容,如下图示:

基于Matlab web Server实现混合编程

将其修改如下图所示:

基于Matlab web Server实现混合编程

即将虚拟目录/icons/映射到目录c:/testweb/icons/,以后对/icons/的访问实际上是对c:/testweb/icons/的访问。

注意:每次对httpd.conf文件修改后,要重启Apache,设置的修改才起作用。

#p#副标题#e#3. matlab web server 的安装和配置

Web Server 的系统配置文件位于%MATLAB%webservermatlabserver.conf.(%MATLAB%表示实际的安装目录)初次安装后,该文件中只有一行

-m 1

这一参数表示允许同时运行的MATLAB进程数。默认为1。可以修改为更大的数值,数值越大,MATLAB服务器的负担越大。

对matlabserver.conf的说明:

当matlabserver启动时,从matlabserver.conf文件获取初始设置数据,当安装Matlab Web server时生成了这个文件,位于 %matlab%/webserver目录中,配置设置必须显示在matlabserver.conf的第一行,其基本的设置选项为:

选项

说明

-p [n]

Matlabserver 侦听的端口号 默认值是8888

-m [n]

Matlabserver同时运行的最大线程数 m,默认值是1

-o timeout

等待Matlabserver开始的秒数,默认值300

-a path

#p#副标题#e#Web Server 的配置文件为:

%MATLAB%toolbox webserver wsdemosmatweb.conf

Web Server 的CGI程序为

%MATLAB%toolbox webserver wsdemosmatweb.exe或者

%MATLAB%webserverbinwin32matweb.exe.

对matweb.conf文件的说明:

matweb 连接matlabserver 需要的配置文件,必须同matweb 程序一起放在虚拟目录 /cgi-bin中。

Matlab自带例子中初始的配置文件内容如下图所示:

基于Matlab web Server实现混合编程

在同一个工程中,不同应用的配置必须在同一个配置文件中。例如matlab自带的例子可视为一个工程,其中有四个应用webmagic , webpeaks , webstockrnd ,players .

选项

说明

参考值

[application]

(必须)

Matlab应用运行的M文件名

[webpeaks]

mldir

(可选)

读写文件的工作目录,设定后将自动添加到Matlab的搜索目录中

mldir=c:/testweb/icons

mllog

(可选)

产生一个记录应用和Matlab进行信息交换的日志文件。运行时需将它关闭,否则降低程序的性能

c:/testweb/webpeaks.log

mlserver

(必须)

运行matlabserver主机名

K;也可以是IP地址211.66.15.83

mlport

(可选)

Matlabserver侦听的端口号,必须与Matlabserver.conf中一致

默认8888

mltimeout

(可选)

等待matlabserver的最大超时时间的秒数

默认180

my_var

用户自定义的配置变量

按编者自己的实际配置修改如下图示:

基于Matlab web Server实现混合编程

#p#副标题#e#要特别注意一下,必须在[webpeaks]和项中加入

mldir=C:/testweb/icons

否则,程序运行生成的图片将被放置在根目录即c:testweb下,而调用显示图片时是在c:testwebicons里查找文件。结果是无法显示生成的图片。

4. 运行例子

根据上述操作后,完成了一个简单的matlab web server 应用的配置,在局域网中其他机子上的浏览器地址栏中输入211.66.15.83可出现如下页面,如下图示:

基于Matlab web Server实现混合编程

选择参数,并按下Generate Plot 按钮后,出现如下画面,如下图示:

基于Matlab web Server实现混合编程

5. matlab web server 应用程序的编写

1. Matlab web server 工作原理:

Matlab Web Server 组件包括matlabserver.exe、matweb.exe、matweb.m和两个配置文件matlabserver.conf、matweb.conf。

matlabserver管理Web 应用和Matlab之间的通信,matlabserver是一个多线程的基于 T C P/IP的服务器,它运行输入HTML 文档内的隐藏域mlmfile 的值指定的M文件,这是通过唤起文件matweb.m,再由它来执行这个 M文件. matlabserver可以侦听任何一个合法的 TCP/IP 端口,不过要配置matlabserver.conf 文件,并且在该文件中还可以设置同时最多有几个连接。Matweb是matlabserver 的一个客户端应用,利用 C G I 把 H T M L 的输入数据传送给matlabserver; matweb.m是调用 Web 应用要运行的 M文件matweb.conf是matweb 连接Matlabserver 需要的配置文件。

基于Matlab web Server实现混合编程

#p#副标题#e#2. 代码分析

2.1 主页index.html(即webpeaks.html)的代码如下:

MATLAB Peaks Plot

src="peaksplot.html"

name="topframe"

marginwidth=10

marginheight=1

frameborder=0>

src="dummy.html"

marginwidth=0 marginheight=0

name="outputwindow" frameborder=0>

标记 定义了一个框架集,其中有frame定义的两个框架,第一个名为topframe,起始文档为peaksplot.html第二个名为outputwindow,起始文档为dummy.html。

2.2 输入html文档peaksplot.html部分代码如下:

窗体顶端

基于Matlab web Server实现混合编程

Peaks Plot Generator

基于Matlab web Server实现混合编程

#p#副标题#e#2.3 peaks plot 的M文件webpeaks.m分析:

function rs = webpeaks(h)

% h是matweb程序产生的一个结构,包含了与输入hmtl表单域的相对%应的域,在该例中h的域值分别为h =

% mlmfile: 'webpeaks'

% red: '0.7'

% green: '0.6'

% blue: '0.8'

% shading: 'Interpolated'

% AZ: '-37.5'

% EL: '30'

% mlid: 'ml00003'

% mldir: 'c:/testweb/icons’

%

mlid = getfield(h, 'mlid');%获得唯一的id,用来生成唯一的图像文件名。

cd(h.mldir);%修改当前路径,即设c:/testweb/icons为当前目录

wscleanup('ml*peaks.jpeg', 1);%删除当前目录下与ml*peaks.jpeg名字

%相似的一小时前生成的文件

%获得选择的颜色值和角度及阴影类型

rcolor = str2double(h.red);

gcolor = str2double(h.green);

bcolor = str2double(h.blue);

azimuth = str2double(h.AZ);

elevation = str2double(h.EL);

if (isfield(h, 'shading'))

shdng = getfield(h, 'shading');

if strcmp(shdng, 'Interpolated');

shdng = 'interp';

end

end

%生成图形

f = figure('visible','off');

z = peaks;

surf(z);

pos = get(gcf, 'position');

pos(3) = 380;

pos(4) = 310;

l = light('color', [rcolor gcolor bcolor]);

shading(lower(shdng));

lighting phong;

set(gcf, 'Position', pos, 'PaperPosition', [.25 .25 4 3]);

view(azimuth, elevation);

%保存图形

drawnow;

s.GraphFileName = sprintf('%speaks.jpeg', mlid);

wsprintjpeg(f, s.GraphFileName);

s.GraphFileName = sprintf('/icons/%speaks.jpeg', mlid);%如果没有这

%条语句,则需要在输出html文档中的

%

基于Matlab web Server实现混合编程

赞助本站

相关内容
AiLab云推荐
推荐内容
Copyright © 2010-2024 AiLab Team. 人工智能实验室 版权所有    关于我们 | 联系我们 | 广告服务 | 公司动态 | 免责声明 | 隐私条款 | 工作机会 | 展会港