如何从java运行MATLAB文件(.m文件)?

时间:2014-04-27 18:39:37

标签: java matlab mixed-programming

我试图找出一种从java运行.m文件的方法。

运行.m文件时,它会输出我需要检索的文本文件。我已经有了在java中检索文本文件的代码,但我仍然无法弄清楚如何从java启动和运行.m文件,以便它输出我需要的文件。有什么想法吗?

4 个答案:

答案 0 :(得分:1)

你可以启动一个Java进程并运行matlab ..." matlab -r" yourMfile"

答案 1 :(得分:1)

以下是您正在寻找的代码:

import matlabcontrol.*;

    public class matlabconnect
    {
        public static void main(String[] args)
            throws MatlabConnectionException, MatlabInvocationException
        {

    // create proxy
             MatlabProxyFactoryOptions options =
                new MatlabProxyFactoryOptions.Builder()
                    .setUsePreviouslyControlledSession(true)
                    .build();

    MatlabProxyFactory factory = new MatlabProxyFactory(options);
            MatlabProxy proxy = factory.getProxy();

            // call builtin function
            proxy.eval("disp('hello world')");

            // call user-defined function (must be on the path)
            proxy.feval("matlab_file_name");

            // close connection
            proxy.disconnect();
        }

我测试了这个程序。它运作良好。不要忘记将matlab文件放在默认路径中。

答案 2 :(得分:1)

对于matlab / JAVA,已经有了一些较新的api

    <dependency>
        <groupId>com.diffplug.matsim</groupId>
        <artifactId>matconsolectl</artifactId>
        <version>4.5.0</version>
    </dependency>

    // create proxy
    MatlabProxyFactoryOptions.Builder builder = new MatlabProxyFactoryOptions.Builder();

    MatlabProxyFactory factory = new MatlabProxyFactory(builder.build());
    // get the proxy
    MatlabProxy proxy = factory.getProxy();

    // call user-defined function (must be on the path)
    proxy.eval("addpath('"...PATH..."')");
    proxy.feval("function");

    // close connection
    proxy.disconnect();

答案 3 :(得分:0)

我认为MatlabControl就是你想要的。这一切都在这里描述:http://www.cs.virginia.edu/~whitehouse/matlab/JavaMatlab.html

实质上,请致电

MatlabControl.eval(&#34; yourfile.m&#34);