Pass Variables from Java to MATLAB
Ways to Pass Variables
You can pass Java® variables to MATLAB® using these methods:
Pass the variables as function arguments in calls to the
MatlabEnginefevalandfevalAsyncmethods. Variables passed as arguments to function calls are not stored in the MATLAB base workspace.Put the variables in the MATLAB base workspace using the
MatlabEngineputVariableandputVariableAsyncmethods.
For information on type conversions, see Java Data Type Conversions.
Pass Function Arguments
This example code passes the coefficients of a polynomial, , to the MATLAB
roots function.
Define a double array
pto pass as an argument for the MATLABrootsfunction.Define a double array
rto accept the returned values.
import com.mathworks.engine.*;
public class javaPassArg{
public static void main(String[] args) throws Exception{
MatlabEngine eng = MatlabEngine.startMatlab();
double[] p = {1.0, -1.0, -6.0};
double[] r = eng.feval("roots", p);
for (double e: r) {
System.out.println(e);
}
eng.close();
}
}Put Variables in the MATLAB Workspace
This example code puts variables in the MATLAB workspace and uses those variables as arguments in a MATLAB call to the MATLAB
complex function. The MATLAB
who command lists the workspace
variables.
import com.mathworks.engine.*;
import java.util.Arrays;
public class javaPutVar {
public static void main(String[] args) throws Exception {
MatlabEngine eng = MatlabEngine.startMatlab();
eng.putVariable("x", 7.0);
eng.putVariable("y", 3.0);
eng.eval("z = complex(x, y);");
String[] w = eng.feval("who");
System.out.println("MATLAB workspace variables " + Arrays.toString(w));
eng.close();
}
}