如何使用matlabcontrol从Java调用Matlab函数而不必每次都启动新的会话?

时间:2011-12-07 20:46:12

标签: java matlab

我正在使用matlabcontrol从Java调用Matlab函数

我的代码运行良好,但只要我在Java中运行代码,它就会打开新的Matlab会话。 我根据Javadoc编辑,但我想我错过了一些东西。

我也尝试使用/不使用'proxy.disconnect()',但它仍会打开新的Matlab会话。 任何提示都会非常有用。我卡住了..

下面是我的Java代码

import matlabcontrol.MatlabConnectionException;
import matlabcontrol.MatlabInvocationException;
import matlabcontrol.MatlabProxy;
import matlabcontrol.MatlabProxyFactory;
import matlabcontrol.MatlabProxyFactoryOptions;

public class callSaliencymap {

/**
 * @param args
 */
public static void main(String[] args) throws MatlabConnectionException, MatlabInvocationException
{
    //Create a proxy, which we will use to control MATLAB
    MatlabProxyFactory factory = new MatlabProxyFactory();
    MatlabProxy proxy = factory.getProxy();

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

    factory = new MatlabProxyFactory(options);




    //Create proxy factory


    //test the saliencymap
    Object[] saliencylocation = proxy.returningFeval("runActivation",1,"tank.bmp",1);
    System.out.println(saliencylocation[0]);

    //Disconnect the proxy from MATLAB
    //proxy.disconnect();
}

3 个答案:

答案 0 :(得分:3)

这就是我所做的,希望有所帮助

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

    MatlabProxyFactory factory = new MatlabProxyFactory(options);
    MatlabProxy proxy = factory.getProxy();

答案 1 :(得分:0)

尝试直接使用Matlab Engine而不是Matlab Control。

答案 2 :(得分:0)

MatlabProxyFactoryOptions options = new MatlabProxyFactoryOptions.Builder()
                .setUsePreviouslyControlledSession(true)
                 //.setPort(2100)
                .build();           

MatlabProxyFactory factory=new MatlabProxyFactory(options );
MatlabProxy proxy=factory.getProxy();
proxy.disconnect();//this is very important