2015-09-15 18 views
0

我有問題,特別是使用eval和feval函數的matlabcontrol liblary。 這是我的計劃java,matlabcontrol,使用eval和feval

package matlab; 

    import java.io.IOException; 
    import java.util.Arrays; 
    import java.util.logging.Level; 
    import java.util.logging.Logger; 
    import matlabcontrol.MatlabProxy; 
    import matlabcontrol.MatlabProxyFactory; 
    import matlabcontrol.MatlabConnectionException; 
    import matlabcontrol.MatlabInvocationException; 
    import matlabcontrol.extensions.MatlabNumericArray; 
    import matlabcontrol.extensions.MatlabTypeConverter; 

    public class Matlab { 

     public static void main(String[] args) { 

      String address = "D:\\database.mat"; 
      int hidden = 10; 
      int epoch = 100; 
      int mu = 1; 
      int lr =1; 
      int fail =1; 
      try { 

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


     proxy.eval("load"+address); 
//there is problem here unclosed string literal 
     proxy.eval("net=newff(input,target,["+hidden+"),(logsig, tansig),trainlm); 
     proxy.eval("net.trainparam.showwindow=true;"); 
     proxy.eval("net.divideRand='trainlm';"); 
     proxy.eval("net.trainparam.epochs="+epoch+";"); 
     proxy.eval("net.trainparam.mu="+mu+";"); 
     proxy.eval("net.trainparam.lr="+lr+";"); 
     proxy.eval("net.trainparam.goal=0;"); 
     proxy.eval("net.trainparam.max_fail="+fail+";"); 
     proxy.eval("net=train(net,input,target);"); 
     proxy.eval("class_Matlab=sim(net,target);"); 
     proxy.eval("save net net class_Matlab"); 




     proxy.disconnect(); 
      } catch (MatlabConnectionException ex) { 
       Logger.getLogger(Matlab.class.getName()).log(Level.SEVERE, null, ex); 
      } catch (MatlabInvocationException ex) { 
       Logger.getLogger(Matlab.class.getName()).log(Level.SEVERE, null, ex); 
      } 
     } 

    } 

我仍然不知道如何使用eval和feval得當,可以有人解釋我如何使用eval和feval?

我測試利用MathWorks公司例如圖書館,它工作得很好

package matlab; 

import java.io.IOException; 
import java.util.Arrays; 
import java.util.logging.Level; 
import java.util.logging.Logger; 
import matlabcontrol.MatlabProxy; 
import matlabcontrol.MatlabProxyFactory; 
import matlabcontrol.MatlabConnectionException; 
import matlabcontrol.MatlabInvocationException; 
import matlabcontrol.extensions.MatlabNumericArray; 
import matlabcontrol.extensions.MatlabTypeConverter; 

public class Matlab { 

    public static void main(String[] args) { 


     try { 

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


    proxy.eval("[x,t] = simplefit_dataset;"); 
    proxy.eval("net= feedforwardnet(10);"); 
    proxy.eval("net = train(net,x,t);"); 
    proxy.eval("view(net)"); 



    proxy.disconnect(); 
     } catch (MatlabConnectionException ex) { 
      Logger.getLogger(Matlab.class.getName()).log(Level.SEVERE, null, ex); 
     } catch (MatlabInvocationException ex) { 
      Logger.getLogger(Matlab.class.getName()).log(Level.SEVERE, null, ex); 
     } 
    } 

} 

回答

0
public static void main(String[] args) throws MatlabConnectionException, MatlabInvocationException 
{ 
MatlabProxyFactoryOptions options = 
        new MatlabProxyFactoryOptions.Builder() 
         .setUsePreviouslyControlledSession(true) 
         .build(); 
MatlabProxyFactory factory = new MatlabProxyFactory(options); 
MatlabProxy proxy = factory.getProxy(); 
proxy.feval("matlab_filename"); 
proxy.disconnect(); 
} 

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(); 
//Set a variable, add to it, retrieve it, and print the result 
proxy.setVariable("a", 5); 
proxy.eval("a = a + 6"); 
Object result = proxy.getVariable("a"); 
System.out.println("Result: " + result); 

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

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(); 

//Display 'hello world' like before, but this time using feval 
proxy.feval("disp", "hello world"); 

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

如需更多幫助,請執行實例第一。 https://code.google.com/archive/p/matlabcontrol/wikis/Walkthrough.wiki

希望它能幫助你。