我的Java程序如何连续使用MATLAB而无需每次都建立连接?

时间:2016-07-15 08:39:58

标签: java matlab matlabcontrol

我有一个通过matlabcontrol.jar包在Java Eclipse项目上运行的MATLAB脚本。

我有以下设置

MatlabProxyFactoryOptions options = new MatlabProxyFactoryOptions.Builder()
            .setUsePreviouslyControlledSession(true)
            .setHidden(true)
            .setMatlabLocation(null).build();

MatlabProxyFactory factory = new MatlabProxyFactory(options);

MatlabProxy proxy = factory.getProxy();

//some code invoking the proxy.eval() method

问题是我在模拟运行时期间运行了几次MATLAB脚本。我怎样才能让Java每次想要使用MATLAB函数时都不必重新连接MATLAB?

任何帮助都将不胜感激。

谢谢!

1 个答案:

答案 0 :(得分:1)

我不是JAVA的专家,所以我会用简单的语言给出我的解决方案,你可以将其翻译成JAVA世界。 :)

  1. 创建一个负责处理连接的JAVA单例类。
  2. 提供指向singleton对象的公共静态只读属性。
  3. 现在使用singleton对象来调用MATLAB函数。
  4. E.g:

    public class MATLABConnector
    {
          private MATLABConnector con=new MATLABConnector();
          MatlabProxyFactoryOptions options = new MatlabProxyFactoryOptions.Builder()
            .setUsePreviouslyControlledSession(true)
            .setHidden(true)
            .setMatlabLocation(null).build();
    
          MatlabProxyFactory factory = new MatlabProxyFactory(options);
    
          private MATLABConnector() 
          {
                // Do basic initializations.
          }        
    
          private boolean checkConnecionStatus();
          private boolean establishConnection();
          public static MATLABProxy getProxy()
             {
                  if(!con.checkConnectionStatus())
                        con.establishConnection();
                  return con.factory.getProxy();
             }
      }