2015-10-30 36 views
2

我从Eclipse Java界面调用MATLAB程序。我已经使用MatlabControl。 当我多次运行Java程序时,每次打开MATLAB的新实例时,都会使计算速度变慢。如何防止在多次运行Java程序时打开MATLAB的新实例

是否有可能阻止它打开MATLAB的新实例?如果可能的话,我该怎么做?

如果我有一个已经打开的MATLAB终端,有可能计算可以简单地使用该终端,而不是打开一个新的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.它是可以在java中使用的.NET。
+0

这不是关于Java的多个实例我正在寻找。我希望在几秒钟后再次运行相同的程序(注意它们不是并行运行)。但是每次,mat; ab都会打开一个新实例,而不是在Matlab的开始实例中更新值。问题仍然存在。 – user24094

+0

对于所有这些解决方案,它们并不存在并行问题,相关部分是您希望跨应用程序共享对matlab的访问权限。 – Daniel

+0

proxy.exit()无法解决我的问题。我需要一些可以防止每次都打开新实例的东西。 – user24094

0

这里是matlabcontrol教程关于这个问题的注释:

评论通过潘文凯... @ 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,以这样的....欢呼

相关问题