在java中使用void函数的值
问题描述:
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#中你可以使用这个:在java中使用void函数的值
matlab.Feval(“GetParameters”,1,out result,individual [0]/60,individual [2],individual [1]); object [] res = result as object [];
并使用void方法的结果 我可以在java中做什么?
答
按照javadocs为MatlabProxy
,有一种叫做returningFeval
方法,返回在Object[]
MATLAB函数调用的结果。事情是这样的:
Object[] res = proxy.returningFeval("CalculatinScore", 1, /* one result */
0.4,0.1,0.8,0.5);
根据记录,则不能使用void
方法的结果,因为void
方法不返回任何结果。
感谢您的回答。我可以打印答案吗?例如这里答案是0.5。我试图用ToString()方法打印它,但我得到了[D @ 4fca772d – user3118071
这就是告诉你,你实际得到的结果是一个'double'数组。投它,并在第一个元素。 –