【问题标题】:How to execute a matlab file on the background through Java?如何通过Java在后台执行一个matlab文件?
【发布时间】:2014-06-20 09:45:10
【问题描述】:

我有一个 Java 程序,它对读取和执行函数的 matlab 文件进行了一些更改。有没有办法通过Java程序调用和运行这个read.m文件而不必打开Matlab?我尝试搜索 matlabcontrol 文档,但没有找到任何相关内容。如果有人能指导我完成,我将不胜感激。

提前谢谢你。

public static void tomatlab() throws MatlabConnectionException, MatlabInvocationException {


        MatlabProxyFactoryOptions options =
            new MatlabProxyFactoryOptions.Builder()
                .setUsePreviouslyControlledSession(true)
                .build();
        MatlabProxyFactory factory = new MatlabProxyFactory(options);
        MatlabProxy proxy = factory.getProxy();


        proxy.eval("addpath('C:\\path_to_m_file)");
        proxy.feval("read");
        proxy.eval("rmpath('C:\\path_to_m_file')");

        // close connection
        proxy.disconnect();

    }

【问题讨论】:

    标签: java matlab invoke


    【解决方案1】:

    您需要一个运行时环境或 M 代码。我看到的可能性是:

    • 使用打开 matlab 的 Matlab 控件
    • 使用 builder ja 部署一个 jar,包括运行时的必要部分
    • 如果你的M代码兼容octave,你可以使用octave的c++接口创建一个dll,可以独立于Matlab使用。

    【讨论】:

    • 感谢您的回复。在我的情况下,第三种选择是不可能的。有没有办法避免打开matlab通过Matlab控件执行.m文件? - 使用builder ja,每次运行程序时都必须将.m文件转换为jar来执行它,但是转换效率高吗?
    • 你必须运行Matlab,否则没有M-code的解释器。 builder ja 使代码变慢,因为它没有使用原生库,但几乎没有启动时间。
    • 执行 .m 文件的 matlabcontrol 类是什么?因为我找不到任何相关的东西。
    猜你喜欢
    • 2019-06-23
    • 2019-03-02
    • 2023-03-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多