matlab在线画图-MATLAB 绘图(二)
如何使用matlab在网页中作图

Matlab的函数绘图功能应该是所有数值分析软件中最出色的,在自己的网页中加入Matlab图形,不仅可以使自己的网页显得很酷很炫,而且可以使自己的网页非常专业,尤其适合发表论文时作为引用的验证系统的网站,同时网页上的Matlab图形还允许用户和图形之间做高效的互动。
本文的基础建立在你已经知道如何对Matlab库函数或者是手动编写的函数打jar包,并在一般java应用程序中调用。本文将主要讲解如何部署包含有定制Matlab图形的网站,所采用的基本工具是Matlab
R2010b(注意,更低版本的Matlab可能不具备打jar包的功能),Tomcat6,其他工具有MyEclipse。本文将尽量以最浅显易懂的方式介绍在网页中加入Matlab图形的方法。
使用java在网页中加入Matlab图形有三种方式:
1、使用servlet返回的HTML字符串将Matlab图形嵌入网页;
2、直接使用JSP中的WebFigure标签;
3、使用中间件将整个Matlab图形嵌入网页,包括其功能和操作。
本文将只介绍第二种方法。
1 Matlab函数编写
首先确定返回WebFigure的Matlab函数的基本形式如下:
function [result1 result2] = getfigure(parameter1, parameter2) f = figure('Visible','off'); %建立一个Figure. 生成函数图形的代码,插入到f中去; result1 = webfigure(f); %将Figure转换为WebFigure并返回 close(f); %将原始Figure f关闭end
使用Matlab编译器将上述函数打成jar包,在编译之前最好在Matlab窗口中测试一下这个函数,以保证其可以返回期望的结果,为了看到图形可以将close(f)语句暂时注释掉。
2 Web工程的配置
2.1 工程结构
基本结构如下:
Webroot
--WEB-INF
--classes
--lib
对于tomcat来说,直接将此目录copy到其webapps目录下就可以完成部署,但作者还是建议在MyEclipse中将此工程目录打成war包后,在tomcat的manage窗口中完成部署。
Tomcat只有一个部署文件,其中需要做一些修改,之后介绍。
是显示matlab图形必须的文件,建议在matlab安装文件夹中自己查找,加入到网站目录树中。
Classes文件夹中放置的是一些编译好的文件,如servlet类。这些servlet需要事先编译,编写servlet在web application的src文件夹下,注意在工程中包含等必须的jar包,打war包时,MyEclipse会自动将编译好的class文件从src文件夹copy到classes文件夹。
Lib文件夹可以不用考虑,打war包时,MyEclipse会自动将用户添加的jar包添加到这个文件夹下。 Web根目录下放置jsp文件和html文件,注意包含必要的jar包,否则会报错,但不会影响打war包。
这次使用java搭建网站有一些强烈的感觉,其实用J2EE搭建网站还是非常容易的,只要你遵循J2EE的基本规范就可以了,具体的来说就是遵循上述文件设置规范,以及相应的文件编写规范。另外,对于相对规模较小的应用,JSP+Servlet是非常快捷且方便的,像JSP,可以直接在tomcat的webapp部署文件夹下,使用文本编辑的方式直接修改,再使用浏览器直接进行调试,非常方便且直接。似乎听有人说现在开发都不再使用Bean了,不知道是不是真的。
2.2 修改部署文件
使用MyEclipse建立一个Web Application工程,修改Webroot目录下WEB-INF目录下的部署文件,在web-app标签中加入如下代码:
<servlet> <servlet-name>WebFigures</servlet-name> <servlet-class> </servlet-class></servlet><servlet-mapping> <servlet-name>WebFigures</servlet-name> <url-pattern>/WebFigures/*</url-pattern></servlet-mapping> 如果你生成了自己的servlet的话,还需要添加相应的代码。
3 生成jsp文件
Jsp头部需要添加的东西:
<%@ taglib prefix="wf" uri="/WEB-INF/" %>
引用文件,定义标签项。 <%@ page import="" %>
引用WebFigure库,以及你自己编写的Matlab类库,另外引用.*也是必须的,因为其中包含一些Error定义以及必要的类和接口的定义。
在body体中加入如下类似的代码: <% YourComponentClassmyDeployedComponent = null; try { myDeployedComponent = new YourComponentClass(); try
{ WebFigurewebFigure =
(WebFigure) (MWJavaObjectRef)(1)[0]).get();//matlab类的使用就不再说明了,此处调用与在普通java程序中调用matlab类是相同
的 ().setAttribute("YourFigure",
webFigure); } catch(ClassCastException e) { throw new
Exception ("Issue casting deployed components outputs to WebFigure", e); } } catch (Exception e) { e.printStackTrace(); } finally { (); }%><wf:web-figure name="YourFigure" scope="session"/>
打war包,将上述网站工程部署,恭喜你已经可以看到自己定制的包含Matlab图形的网页了。
最后,再谈一谈我这段时间使用Matlab的感受吧,最直观的感受就是简单易用而且强大,看Matlab的帮助文件感觉条理和结构非常清晰,措辞明确且浅显易懂,非常符合科研人员的一贯作风。
就以webfigure的使用这篇帮助文献来说吧,声明了开发一个matlab网站需要哪些人员,每个人员的技能准备要求,别被其中Expert要求所吓倒,其实matlab并不要求Expert有非常深入的技能,局部基本功就足够了。文章清晰得列出了开发过程中所可能遇到的方方面面的问题,并分门别类,还给出了具体的例子,
matlab的帮助文件从不故弄玄虚,每一句话都直指核心问题,且浅显易懂,通俗的说,看过帮助文件的每一句话,你都能具备举一反三的能力。
MATLAB 绘图(二)

本次的内容涉及到除了线图以外的绘图,包括离散绘图、极坐标绘图、曲面绘图和统计绘图。
subplot 函数指的是将当前图窗划分为 m × n 网格,并在编号 p 指定的位置创建坐标区。
编号规则为:从第一行自左向右递增。
stem 函数的功能是描述离散数据中的冲激函数,以绘图高度反映一维离散序列中脉冲的强度。
数据值对应每一个脉冲的强度。
stairs 函数的功能是描述离散数据中的阶跃函数,以绘图高度反映一维阶跃信号中的实时强度。
数据值为每一个时间周期的高度。
scatter 函数绘制二维平面上的散点图,也就是不绘制曲线的 plot 函数。
输入参数为散点图的横坐标序列和纵坐标序列。
polar 函数是 MATLAB 中用于绘制极坐标图的函数。
polar 函数已经被 MATLAB 官方更替,更推荐使用的是新的函数方法:polarplot (新方法在旧版本的 MATLAB 如 2015b 版本仍不可用)。因此如果你在使用旧版本软件,使用 polar 方法;如果你在使用的版本支持 polarplot 函数,那就使用 polarplot 函数。
polarplot 函数就是极坐标系下的 plot 函数。以 polarplot(theta,rho) 形式调用。
同理,也有 polarscatter 函数。
surf 函数将创建一个三维曲面图。该函数将矩阵 Z 中的值绘制为由 X 和 Y 定义的 x-y 平面中的网格上方的高度;此外,函数将对三维曲面进行渲染,每个区域的颜色与高度成比例。
其他 surf 类型曲面图函数
surf 函数将创建一个三维曲面图。该函数将矩阵 Z 中的值绘制为由 X 和 Y 定义的 x-y 平面中的网格上方的高度;函数仅对于三维网格进行渲染,每个区域的颜色与高度成比例。
其他 mesh 类型曲面图函数
bar 函数顾名思义是绘制条形图的函数。
由于统计图表有着多种形式的表现需求,这里使用子窗口绘图来实现。
其他 bar 类型函数:
histogram 函数的功能是根据传入的数据绘制统计直方图。
其他 histogram 函数:
pie 函数的功能是根据传入的比例序列绘制饼状图。
其他 pie 类型函数:
heatmap 函数:根据数据集绘制热图;
wordcloud 函数:使用文本数据创建词云图;
geobubble 函数:以可视方式呈现特定地理位置的数据值
本节中提到除了线图以外的另外四种常见绘图:离散绘图、极坐标绘图、曲面绘图和统计绘图。
值得一提的是,对于极坐标绘图的函数方法,官方已经给出更佳的更新,但旧版本中无法应用,这里给出的为新版本的方案。
用matlab画图

x=(-2:.1:10)';
%
从-2到10,步长0.1,加个撇号转置一下,结果x是个列向量。
y1=2-x;
%
第一个函数产生的函数值序列,也是一个列向量
y2=x-sqrt((x-1).^2+4);
%
第二个函数的函数值列向量
ind=find(y1<y2);
%
y1比y2对应位置的元素小的话,把位置索引保存在变量ind里
x0=[x(ind),x(ind)]';
%
两组函数,两组相同的自变量,排成两列,再转置一下变成两行,这个是y1<y2的部分,为了画阴影线做准备的
x0=x0(:);
%
把两行数排成一列,由于matlab排列的顺序是先排第一列的所有数,再接第二列的所有数,以此类推,所以两行数变为一列就是第一行取一个,第二行取一个,再第一行取一个,第二行取一个,以此类推。那么后面画图就是上下上下上下的连线,画出折线,当阴影线用了。
y0=[y1(ind),y2(ind)]';
%
y1,y2也排起来做同样处理y0=y0(:);
%
y1取一个,y2取一个,再y1取一个,y2取一个,形成一列
plot(x,[y1,y2],x0,y0,':')
%
[y1,y2]是两条曲线,共用同一个自变量x。x0,y0是阴影线,我用的是虚线。
legend('y1=2-x','y2=x-sqrt((x-1).^2+4)','y>y1&y<y2')
%
图示 最后回答一下你那个问题,不加撇号的话,就画不出阴影线了,一上一下一上一下的折线。
-
果盘绘画图片大全简单创作方法快速制作技巧2024-01-02 16:57:54
-
小年插画图片创作方法快速制作技巧2024-01-02 16:57:20
-
小年绘画作品制作技巧2024-01-02 16:55:45
-
小年插画图片创作方法快速制作技巧2024-01-02 16:55:02
-
立春插画图片如何制作2024-01-02 16:54:19
-
立春插画图片创作方法快速制作技巧2024-01-02 16:53:32






扫描二维码添加客服微信
扫描二维码关注