1

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

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

4

4 回答 4

1

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

于 2014-04-27T18:45:55.397 回答
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 文件放到它的默认路径下。

于 2015-11-18T22:33:28.533 回答
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();
于 2020-07-20T15:12:53.003 回答
0

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

本质上,调用

MatlabControl.eval("yourfile.m");

于 2014-04-27T18:52:10.390 回答