【问题标题】:How to prevent opening a new instance of MATLAB when multiple times run a Java program多次运行Java程序时如何防止打开新的MATLAB实例
【发布时间】:2015-12-03 17:50:26
【问题描述】:

我正在从 Eclipse Java 接口调用 MATLAB 程序。我已经使用了 MatlabControl。 当我多次运行 Java 程序时,每次它都会打开一个新的 MATLAB 实例,这会使计算速度变慢。

我可以阻止它打开新的 MATLAB 实例吗?如果可能,我该怎么做?

如果我有一个已经打开的 MATLAB 终端,计算是否可以简单地使用该终端,而不是打开一个新的 MATLAB 实例?

任何帮助都将不胜感激。

【问题讨论】:

    标签: java matlab


    【解决方案1】:

    matlabcontrol无法连接到已经打开的matlab实例,只能新建一个。

    为防止打开多个 matlab 实例,您可以在关闭应用程序时使用 proxy.exit() 而不是 proxy.disconnect() 来关闭 matlab。

    要在您的 java 程序的多个实例中进一步仅使用一个 matlab 实例,我看到了不同的可能性,但不是很好。

    1. Matlab 带有它自己的 JVM,你可以启动你的java applications from the matlab console using。官方记载,只能从matlab调用java函数,但是other way round is possible as well。请那个 matlab 使用它自己的可能已经过时的 jvm。
    2. 实现一个服务器,该服务器已启动并公开 matlabcontrol 功能。
    3. 使用matlab automation server,其中instances can be shared.是.NET,可以从java中使用。

    【讨论】:

    • 这与我正在寻找的多个 java 实例无关。我希望几秒钟后一次又一次地运行同一个程序(注意它们不是并行运行的)。但每次,mat;ab 都会打开一个新实例,而不是更新 Matlab 的打开实例中的值。问题依然存在。
    • 对于所有这些解决方案,它们是否并行存在并不重要,相关部分是您希望跨应用程序共享对 matlab 的访问。
    • proxy.exit() 无法解决我的问题。我需要一些可以防止每次都打开新实例的东西。
    • 正如我在回答中提到的,您无法使用 matlabcontrol 连接到已打开的实例。
    • 谢谢。除了matlabcontrol还有什么其他方法可以满足我的要求吗?
    【解决方案2】:

    下面是 matlabcontrol 教程中关于这个问题的评论:

    评论来自 khai...@gmail.com,2012 年 2 月 9 日 要重用现有会话,需要先断开之前的代理。这是一个例子,

    MatlabProxyFactoryOptions options = new MatlabProxyFactoryOptions.Builder().setUsePreviouslyControlledSession(true).build();
    
    MatlabProxyFactory factory = new MatlabProxyFactory(options);
    
    MatlabProxy proxy = factory.getProxy();
    
    ...
    
    proxy.disconnect();
    
    proxy = factory.getProxy(); // this won't open a new Matlab session
    

    它对我不起作用。但有些人声称它完成了这项工作。

    谢谢。除了 matlabcontrol 之外还有其他方法可以满足我的要求吗? – user24094

    matlabcontrol 的其他替代方法: https://code.google.com/p/matlabcontrol/wiki/ApproachesToControl

    希望你能做到,这样工作真的很痛苦 ITA.... 干杯

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-04-12
      • 2019-11-26
      • 1970-01-01
      • 1970-01-01
      • 2016-03-03
      • 1970-01-01
      • 2023-02-11
      • 1970-01-01
      相关资源
      最近更新 更多