import ij.*;
import ij.plugin.filter.PlugInFilter;
import ij.process.*;

import com.mathworks.engine.MatlabEngine;

import java.util.concurrent.ExecutionException;
import java.util.concurrent.Future;

public class Demo_Figure implements PlugInFilter {

    Future<MatlabEngine> engFuture;
    MatlabEngine eng;

    public Demo_Figure() {
        try {
            engFuture = MatlabEngine.startMatlabAsync();
        } catch (Exception e) {
            IJ.log(String.format("exception! %s", e));
        }

    }

    public int setup(String arg, ImagePlus imp) {
        if (IJ.versionLessThan("1.37j"))
            return DONE;
        else    
            return DOES_ALL+DOES_STACKS+SUPPORTS_MASKING;
    }

    public void run(ImageProcessor ip) {
        try {

            // Display the image in a Matlab figure
            float[][] imf = ip.getFloatArray();
            eng = engFuture.get();

            Future<Double> future = eng.fevalAsync("factorial", (double) 10);
            double d = future.get();
            IJ.log(String.format("10! = %f", d));
            eng.putVariableAsync("im", imf);
            eng.fevalAsync("figure");

        } catch (Exception e) {
            IJ.log(String.format("exception! %s", e));
        }
    }
}

--
ImageJ mailing list: http://imagej.nih.gov/ij/list.html