zoukankan      html  css  js  c++  java
  • Java中使用MATLAB作图

    尝试在Java中调用MATLAB!

    1)实验环境

    机器中装有Eclipse和Matlab,并配置好环境变量。

    小魏装的是Eclipse 3.7.1 和Matlab7.11.0 (R2010b)。当然要装有JDK,Eclipse的配置不多说了,网上有许多,至于Matlab,最好在classpath中添加:

    %matlabInstallRoot%\R2010b\toolbox\javabuilder\jar\javabuilder.jar

    这里说“最好”,是因为不添加,只在项目中引用,貌似也是可行的。

    P.S. 如果是VC++中调用MATLAB,一定要在path中添加:

    %matlabInstallRoot%\R2010b\bin\win32

    2)将Matlab的m文件包装成java类

      这里我们使用Matlab自带的例子,在路径

    %matlabInstallRoot%\R2010b\toolbox\javabuilder\Examples\PlotExample

    下,此处是m文件:

    1. function drawplot(x, y)  
    2. plot(x, y); %%使用matlab函数plot()作图  
    function drawplot(x, y)
    plot(x, y); %%使用matlab函数plot()作图

    在MATLAB中Command窗口中输入deploytool调出部署工具DeploymentTool。新建一个工程,输入工程名plotdemo.prj,选择路径,并选择Target为 Java Package。

    在MATLAB右侧会出现我们新建的工程。

    将刚刚编写的m文件直接拖拽进去,并重命名类名为plotter,点击Build编译:

    完成之后(过程有点长~)就会在我们选择的路径下看到 plotdemo的文件夹。

    3)在java工程中调用matlab生成的类

    新建工程TryMatlabPlot,并右键在Build Path中引用相关的包

    %matlabInstallRoot%\R2010b\toolbox\javabuilder\jar\jarbuilder.jar

    以及刚刚生成的plotdemo\distrib\plotdemo.jar

    Java类文件的代码为:

    package lwei.test.matlab;

    import com.mathworks.toolbox.javabuilder.*;
    import plotdemo.*;

    /***
     * 通过调用matlab中的函数在窗口中作图
     * @Author: lwei
     */
    class createplot
    {
       public static void main(String[] args)
       {
          MWNumericArray x = null;   //存放x值的数组
          MWNumericArray y = null;    //存放y值的数组
          plotter thePlot = null;    //plotter类的实例
          int n = 20;                //作图点数

          try
          {
            //分配x、y的值
             int[] dims = {1, n};
             x = MWNumericArray.newInstance(dims,
                MWClassID.DOUBLE, MWComplexity.REAL);
             y = MWNumericArray.newInstance(dims,
                MWClassID.DOUBLE, MWComplexity.REAL);

             //定义  y = x^2
             for (int i = 1; i <= n; i++)
             {
                x.set(i, i);
                y.set(i, i*i);
             }

             //初始化plotter的对象
             thePlot = new plotter();

             //作图
             thePlot.drawplot(x, y);
             thePlot.waitForFigures();
          }

          catch (Exception e)
          {
             System.out.println("Exception: " + e.toString());
          }

          finally
          {
             //释放本地资源
             MWArray.disposeArray(x);
             MWArray.disposeArray(y);
             if (thePlot != null)
                thePlot.dispose();
          }
       }
    }

    package lwei.test.matlab;
    
    import com.mathworks.toolbox.javabuilder.*;
    import plotdemo.*;
    
    /***
     * 通过调用matlab中的函数在窗口中作图
     * @Author: lwei
     */
    class createplot
    {
       public static void main(String[] args)
       {
          MWNumericArray x = null;   //存放x值的数组
          MWNumericArray y = null;    //存放y值的数组
          plotter thePlot = null;    //plotter类的实例
          int n = 20;                //作图点数
    
          try
          {
            //分配x、y的值
             int[] dims = {1, n};
             x = MWNumericArray.newInstance(dims, 
                MWClassID.DOUBLE, MWComplexity.REAL);
             y = MWNumericArray.newInstance(dims, 
                MWClassID.DOUBLE, MWComplexity.REAL);
    
             //定义  y = x^2
             for (int i = 1; i <= n; i++)
             {
                x.set(i, i);
                y.set(i, i*i);
             }
    
             //初始化plotter的对象
             thePlot = new plotter();
    
             //作图
             thePlot.drawplot(x, y);
             thePlot.waitForFigures();
          }
    
          catch (Exception e)
          {
             System.out.println("Exception: " + e.toString());
          }
    
          finally
          {
             //释放本地资源
             MWArray.disposeArray(x);
             MWArray.disposeArray(y);
             if (thePlot != null)
                thePlot.dispose();
          }
       }
    }
    

    运行程序,结果如图:

  • 相关阅读:
    数据可视化之DAX篇(二十五)PowerBI常用的度量值:累计至今
    数据可视化之DAX篇(二十四)Power BI应用技巧:在总计行实现条件格式
    Type-generic math (Numerics) – C 中文开发手册
    Bootstrap4 卡片
    Linux let 命令
    PHP ftp_fput() 函数
    如何从SQL Server DateTime数据类型返回日期
    ID选择器 | ID selectors (Selectors) – CSS 中文开发手册
    git write-tree (Plumbing Commands) – Git 中文开发手册
    C 库函数 – strtod()
  • 原文地址:https://www.cnblogs.com/lixiaolun/p/2631856.html
Copyright © 2011-2022 走看看