【问题标题】:using value of void function in java在java中使用void函数的值
【发布时间】:2017-05-30 07:12:28
【问题描述】:
import matlabcontrol.*;

public class HelloWorld {

    public static void main(String[] args)
            throws MatlabConnectionException, MatlabInvocationException {
        // create proxy
        MatlabProxyFactoryOptions options =
                new MatlabProxyFactoryOptions.Builder()
                        .setUsePreviouslyControlledSession(true)
                        .build();
        MatlabProxyFactory factory = new MatlabProxyFactory(options);
        MatlabProxy proxy = factory.getProxy();


        // call builtin function
        proxy.eval("disp('hello world1')");
        proxy.eval("addpath('E:\\Karshenasi Arsha\\term 4 (payan name)\\payan name\\Matlab')");

        //my problem is here
        proxy.feval("CalculatinScore", 0.4, 0.1, 0.8, 0.5);
        proxy.eval("rmpath('E:\\Karshenasi Arsha\\term 4 (payan name)\\payan name\\Matlab')");


        // close connection
        proxy.disconnect();
    }
}

在这段代码中,我试图从 matlab(CalculatinScore) 调用一个方法并使用结果。 但是 feval() 是无效的,并且不返回值。 我如何使用结果? 例如在 C# 中你可以使用这个:

matlab.Feval("GetParameters", 1, out result, individual[0] / 60, individual[2], individual[1]); object[] res = result as object[];

并使用 void 方法的结果 我可以在java中做什么?

【问题讨论】:

    标签: java matlab


    【解决方案1】:

    根据javadocs for MatlabProxy,有一个方法叫做returningFeval,它返回matlab函数调用结果Object[]。像这样的:

    Object[] res = proxy.returningFeval("CalculatinScore", 1, /* one result */
                                         0.4,0.1,0.8,0.5 );      
    

    郑重声明,您不能使用void 方法的结果,因为void 方法不返回任何结果。

    【讨论】:

    • 感谢您的回答。我可以打印答案吗?例如这里的答案是 0.5。我试图用 ToString() 方法打印它,但我得到了 [D@4fca772d
    • 这告诉你,你实际得到的结果是一个double的数组。投射它,并采用第一个元素。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-09-17
    • 1970-01-01
    • 2014-12-15
    • 2016-08-28
    • 1970-01-01
    • 2018-07-27
    相关资源
    最近更新 更多