zoukankan      html  css  js  c++  java
  • java调用matlab绘图

    环境:

    系统:kali linux 2017

    java: 1.8

    matlab:R2016b

    idea:2016


    1.编写matlab脚本:

    drawplot.m

        %画图 自定义函数drawplot 参数 x y  
        function drawplot(x, y)    
        plot(x, y); %%使用matlab函数plot()作图    
        grid on %网格显示  
        xlabel('X轴值')  
        ylabel('Y轴值')  
        title('Java调用MatLab作图例子')  
    

    脚本保存到指定文件夹

    在matlab命令窗口:

    >> deploytool


    选择Liberary Compiler

    TYPE:java package

    EXPORTED:选择drawplot.m

    修改类名为:Plotter

    点击package

    文件夹下面会多出刚才的工程,里面有我们要要用的jar(xxx.jar)


    在idea下新建工程:javaMatlab

    libs文件夹下有两个依赖包:

    ---xxx.jar

    ---javabuilder,jar (在matlab安装目录 oolboxjavabuilderjarjarbuilder.jar)

    package com.xh.matlab4java;
    
    
    import com.mathworks.toolbox.javabuilder.MWArray;
    import com.mathworks.toolbox.javabuilder.MWClassID;
    import com.mathworks.toolbox.javabuilder.MWComplexity;
    import com.mathworks.toolbox.javabuilder.MWNumericArray;
    import plotdemon.Plotter;
    
    /**
     * Created by root on 8/25/17.
     */
    public class PlotTest {
    
        public static void main(String[] args) {
            // TODO Auto-generated method stub
            MWNumericArray x = null; // 存放x值的数组
            MWNumericArray y = null; // 存放y值的数组
            Plotter thePlot = null; // plotter类的实例(在MatLab编译时,新建的类)
            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();
            }
        }
    }


    注意:

    选择 Edit Configurations

    添加运行环境参数

    LD_LIBRARY_PATH=/opt/Matlab/runtime/glnxa64
    

    否则会报错:不能链接到 libmwmclmcrrt.so.9.1

    至此配置完成,运行正常。

  • 相关阅读:
    python中字典一键多相同值反转技巧
    win10下安装mysql
    上台阶问题的具体走法用python来实现
    桥接模式
    适配器模式
    多线程中lock的使用
    原型模式
    多线程
    建造者模式
    代理模式
  • 原文地址:https://www.cnblogs.com/lanqie/p/7427787.html
Copyright © 2011-2022 走看看