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做什么?
答案 0 :(得分:1)
根据from PIL import Image
import numpy as np
def sortImages(images): #Nearest neighbour algorithm
result = []
tovisit = range(len(images))
best = max(tovisit, key=lambda x: images[x].sum()) #brightest block as first
tovisit.remove(best)
result.append(best)
while tovisit:
best = min(tovisit, key=lambda x: MAD(images[x], images[best])) #nearest neighbour
tovisit.remove(best)
result.append(best)
return result #indices of sorted image blocks
def MAD(a, b): #mean absolute distance
return np.absolute(a - b).sum()
images = ... #should contains b&w images only (eg : from PIL Image)
arrays = [np.array(x).astype(int) for x in images] #convert images to np arrays
result = sortImages(arrays)
的{{3}},有一个名为MatlabProxy
的方法,它在returningFeval
中返回matlab函数调用结果。像这样:
Object[]
对于记录,您不能使用Object[] res = proxy.returningFeval("CalculatinScore", 1, /* one result */
0.4,0.1,0.8,0.5 );
方法的结果,因为void
方法不会返回任何结果。