96编辑器旗下产品
找图
终身
ID:0
到期时间:永久
退出登录
您的位置:首页 > 百科管理 > 详情

matlab在线画图-MATLAB 绘图(二)

原创:找图网 2023-04-11 17:42:12
  • 如何使用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')

    %

    图示 最后回答一下你那个问题,不加撇号的话,就画不出阴影线了,一上一下一上一下的折线。

    最新文章 更多
    最新素材 更多
    公司介绍 网站地图 图片资讯
    Copyright © 2010-2022 山东找图网络科技有限公司  鲁ICP备18007836号-3  邮箱:15653358549@163.com