java和matlab的交互实践--在java项目中调用matlab程序

本文详细介绍了如何在Java项目中部署和配置Matlab程序,包括Matlab的jar包生成步骤和Java项目的环境变量设置。通过示例代码展示了如何在Java中调用Matlab的绘图函数,强调了JDK版本与Matlab的匹配性以及环境变量配置的重要性。
摘要由CSDN通过智能技术生成

        本文主要解决了java项目中调用matlab程序过程中遇到的问题,下文主要分matlab的jar包部署以及java项目配置两个方面来分析。

1、matlab项目的部署 -- 生成jar包

        保存matlab文件,生成.m文件

%画图 自定义函数drawplot 参数 x y

function drawplot(x, y)

plot(x, y); %%使用matlab函数plot()作图

grid on %网格显示

xlabel('X轴值')

ylabel('Y轴值')

title('Java调用MatLab作图例子')

        app --> library Compiler

        选择生成类型为java package ,添加.m文件,配置名称等信息生成

        生成包中带有jar文件

2、java项目配置

        修改环境变量,path添加matlab的dll文件路径。jdk的版本一定要和matlab匹配,否则执行会报  Failed to find the required library mclmcrrt9_4.dll on java.library.path 。

        jdk1.8兼容2018a版本的matlab

        注意:还需要配置的环境变量  JAVA_HOME -- jdk的安装路径,MATLAB_JAVA -- jre路径

        把matlab生成的jar包引入java项目

       引入固定的java调用matlab必备的jar包javabuilder

        执行调用程序:

import com.mathworks.toolbox.javabuilder.*;
import drawplot.Class1;
public class map {
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        MWNumericArray x = null; // 存放x值的数组
        MWNumericArray y = null; // 存放y值的数组
        Class1 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 Class1();
            // 作图
            thePlot.drawplot(x, y);   //调用作图的matlab方法
            thePlot.waitForFigures();
        }
        catch (Exception e) {
            System.out.println("Exception: " + e.toString());
        }
        finally {
            // 释放本地资源
            MWArray.disposeArray(x);
            MWArray.disposeArray(y);
            if (thePlot != null)
                thePlot.dispose();
        }
    }
}

        执行结果:

 

 

 

 

 

 

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值