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

    Java中使用MATLAB作图

    转载请注明出处:http://blog.csdn.net/xiaowei_cqu/article/details/7038819

    最近做一个项目,需要很多进行很多信号处理——小魏就是学软件的,对信号处理简直是个小白,最简单的实现就是傻瓜似的调用MATLAB的各种工具箱,达到目的就行。

    同时,MATLAB是种解释性语言,执行效率比较低,不适用与通用编程平台,同时图形化编程也非常不方面,一举两得的是能在其他语言(VC++\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()作图  

    在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类文件的代码为:

    1. package lwei.test.matlab;  
    2. import com.mathworks.toolbox.javabuilder.*;  
    3. import plotdemo.*;  
    4.  * 通过调用matlab中的函数在窗口中作图 
    5.  * @Author: lwei 
    6. class createplot  
    7.    public static void main(String[] args)  
    8.       MWNumericArray x = null;   //存放x值的数组  
    9.       MWNumericArray y = null;    //存放y值的数组  
    10.       plotter thePlot = null;    //plotter类的实例  
    11.       int n = 20;                //作图点数  
    12.         //分配x、y的值  
    13.          int[] dims = {1, n};  
    14.          x = MWNumericArray.newInstance(dims,   
    15.             MWClassID.DOUBLE, MWComplexity.REAL);  
    16.          y = MWNumericArray.newInstance(dims,   
    17.             MWClassID.DOUBLE, MWComplexity.REAL);  
    18.          //定义  y = x^2  
    19.          for (int i = 1; i <= n; i++)  
    20.             x.set(i, i);  
    21.             y.set(i, i*i);  
    22.          //初始化plotter的对象  
    23.          thePlot = new plotter();  
    24.          thePlot.drawplot(x, y);  
    25.          thePlot.waitForFigures();  
    26.       catch (Exception e)  
    27.          System.out.println("Exception: " + e.toString());  
    28.       finally  
    29.          //释放本地资源  
    30.          MWArray.disposeArray(x);  
    31.          MWArray.disposeArray(y);  
    32.          if (thePlot != null)  
    33.             thePlot.dispose();  

    运行程序,结果如图:

    源码下载链接:http://download.csdn.net/detail/xiaowei_cqu/3877268

     
     
     
  • 相关阅读:
    (转)Java垃圾回收机制
    ThreadPoolExecutor线程池参数说明
    深入Synchronized和java.util.concurrent.locks.Lock的区别详解
    java集合类说明及区别
    JAVA中堆栈和内存分配
    深入理解Java对象序列化
    Java 序列化Serializable
    transient在java中的作用
    let和const命令
    第9章 css3多列布局
  • 原文地址:https://www.cnblogs.com/starrynight/p/2578904.html
Copyright © 2011-2022 走看看