我正在使用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();
}
答案 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