【问题标题】:java, matlabcontrol, using eval and fevaljava, matlabcontrol, 使用eval和feval
【发布时间】:2015-09-15 16:40:25
【问题描述】:

我在使用 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);
        }
    }

}

【问题讨论】:

    标签: java eval matlabcontrol


    【解决方案1】:
    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

    希望对你有帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-03-19
      • 2015-11-22
      • 1970-01-01
      • 2016-03-14
      • 2018-12-15
      • 2017-03-02
      • 1970-01-01
      相关资源
      最近更新 更多