在没有matlab环境的情况下在java类中运行matlab函数

时间:2017-01-11 07:39:38

标签: java matlab

我想在java应用程序中使用matlab函数。我在matlab中使用deploytool从我的函数创建java包。现在,我该如何使用这个包?只能在我的java项目中导入deploytool创建的jar文件并使用它的函数吗?

经过大量的谷歌搜索,我使用this toturial,但在最后一步,我得到错误“无法加载文件”。

我也读到了关于 MatlabControl 的内容,但在这个解决方案中,我们应该在我们的系统中使用matlab环境来运行java代码。但我会在可能根本没有matlab的系统中运行我的最终应用程序。

所以我需要一个解决方案来在java类中运行matlab函数,即使没有matlab环境。

2 个答案:

答案 0 :(得分:2)

最后我解决了我的问题。解决方案一步一步如下:

  1. 编写matlab函数:

    函数y = makesqr(x)

    y = magic(x);

  2. 在matlab中使用deploytool并创建java包。

  3. 3.在Eclipse中创建新的java应用程序并添加主类。 import javabuilde.jar和makesqr.jar:

      import com.mathworks.toolbox.javabuilder.MWArray;
    
      import com.mathworks.toolbox.javabuilder.MWClassID;
    
      import com.mathworks.toolbox.javabuilder.MWNumericArray;
    
      import makesqr.Class1;
    

    和main.java:

    public class main {
    
    public static void main(String[] args) {
    
          MWNumericArray n = null;
          Object[] result = null;
          Class1 theMagic = null;
    
          try
          {
             n = new MWNumericArray(Double.valueOf(5),MWClassID.DOUBLE);
    
             theMagic = new Class1();
    
             result = theMagic.makesqr(1, n);
             System.out.println(result[0]);
          }
          catch (Exception e)
          {
             System.out.println("Exception: " + e.toString());
          }
          finally
          {
             MWArray.disposeArray(n);
             MWArray.disposeArray(result);
             theMagic.dispose();
          }
    }
    

    }

    1. 将javabuilder.jar和makeqr.jar添加到项目的 java build path

    2. 运行它。

    3. Double.valueOf(3),定义函数的输入,输出如下:

       8     1     6
       3     5     7
       4     9     2
      

答案 1 :(得分:0)

我没有妥善解决你的问题。您是否已经从Matlab代码编译jar文件并且您正在尝试使用它,或者您正处于本教程的最后一步?

如果您的答案是最新的案例,很可能您忘记了"。"在课程之前。 从您链接的教程:

  

您必须确保在类路径的第一个位置放置一个点(。)。如果不是,则会收到一条消息,指出Java无法加载该类。

同时检查matlab编译器路径(" c:\ Program Files \ MATLAB \ MATLAB Compiler Runtime \ v82 \ toolbox \ javabuilder \ jar \ javabuilder.jar" - 在教程中)是否正确系统