matlab代码整合成java运行的jar包

上篇文章已经提到最近在着手做的项目,  目前已经初步见到成果,后续还有更庞大的工作要做. 暂时先做一个小小的整理.

 

第一步:在matlab中 package成java运行的jar包

      过程当中遇到的问题:

  1. matlab版本过低时,jkd也需要相应的更改,本次用的matlab 2015a换成jdk1.7之后便可以了 .但是存在一个问题: 貌似matlab值认 配置的JAVA_HOME 我将JAVA_HOME_2配置在path当中结果还是不行.最终将JAVA_HOME更换成了1.7的路径得以解决
  2. 还有一个就是一个系统配置两个jdk环境的问题, 参见上一篇文章.
  3. 由于本次的matlab是多个m文件紧挨着调用的,  网上搜索时看到的大部分的都是类似于一个小demo,只是将其中一个文件打包.最后看到一篇文章中有多个m文件调用的方法.matlab代码整合成java运行的jar包_第1张图片

      打包之后形成的文件夹:

matlab代码整合成java运行的jar包_第2张图片

 

第二步:添加依赖jar包

      1.MATLAB的安装目录下的toolbox\javabuilder\jar\javabuilder.jar

      2.上图only结尾的文件夹中的jar包. 

matlab代码整合成java运行的jar包_第3张图片

 

调用代码:

 /**
     * 调用matlab算法部分
     *
     * @param mp
     */
    public void matlabTest(MatlabParameter mp) {
        // TODO Auto-generated method stub
        MWNumericArray eddyBase = null;
        MWNumericArray gap = null;
        MWNumericArray r = null;
        MWNumericArray plateLength = null;
        MWNumericArray endDistance = null;
        MWNumericArray spacing = null;
        MWNumericArray lunIndex = null;
        MWNumericArray vIndex = null;
        MWNumericArray sideFirst = null;
        MWNumericArray sideSecond = null;
        MWCharArray path = null;

        OCAMW_Main_A.Test test = null;
        try {
            //板间隙
            gap = new MWNumericArray(mp.getGapList(), MWClassID.DOUBLE);
            //电涡流初始值
            eddyBase = new MWNumericArray(mp.getEddyBaseList(), MWClassID.DOUBLE);
            //轮半径
            r = new MWNumericArray(mp.getrList(), MWClassID.DOUBLE);
            //文件与轮对关系
            lunIndex = new MWNumericArray(mp.getLunIndexList(), MWClassID.INT8);
            //matlab读取件夹路径
            path = new MWCharArray(mp.getPathList());
            //板长
            plateLength = new MWNumericArray(mp.getPlateLengthVal(), MWClassID.DOUBLE);
            //端距
            endDistance = new MWNumericArray(mp.getEndDistanceVal(), MWClassID.DOUBLE);
            //间距
            spacing = new MWNumericArray(mp.getSpacingVal(), MWClassID.DOUBLE);
            //速度文件序号
            vIndex = new MWNumericArray(mp.getvIndexVal(), MWClassID.INT8);
            //南北侧起始点(仅测南侧为1:1,仅测北侧为2:2, 南北都测为1:2)
            sideFirst = new MWNumericArray(mp.getSideFirstVal(), MWClassID.INT8);
            //南北侧终点
            sideSecond = new MWNumericArray(mp.getSideSecondVal(), MWClassID.INT8);

            // 初始化对象
            test = new OCAMW_Main_A.Test();

            test.OCAMW_Main_A(gap, eddyBase, r, plateLength, endDistance, spacing, lunIndex, path, vIndex, sideFirst, sideSecond);

        } catch (Exception e) {
            System.out.println("Exception: " + e.toString());
        } finally {
            MWArray.disposeArray(eddyBase);
            MWArray.disposeArray(gap);
            MWArray.disposeArray(r);
            MWArray.disposeArray(plateLength);
            MWArray.disposeArray(endDistance);
            MWArray.disposeArray(spacing);
            MWArray.disposeArray(lunIndex);
            MWArray.disposeArray(vIndex);
            MWArray.disposeArray(sideFirst);
            MWArray.disposeArray(sideSecond);
            MWArray.disposeArray(path);

            if (test == null) {
            } else {

                test.dispose();

            }
            // 释放本地资源
        }
    }

 

你可能感兴趣的:(matlab代码整合成java运行的jar包)