在java

时间:2017-05-30 07:12:28

标签: java matlab

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做什么?

1 个答案:

答案 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方法不会返回任何结果。