Display a MATLAB Plot in a Java Application

Purpose

The purpose of the example is to show you how to do the following:

  • Use the MATLAB® Compiler SDK™ product to convert a MATLAB function (drawplot.m) to a method of a Java® class (plotter) and wrap the class in a Java pacakage (plotdemo).

  • Access the MATLAB function in a Java application (createplot.java) by instantiating the plotter class and using the MWArray class library to handle data conversion.

      Note:   For complete reference information about the MWArray class hierarchy, see the com.mathworks.toolbox.javabuilder package.

  • Build and run the createplot.java application.

The drawplot.m function displays a plot of input parameters x and y.

Procedure

  1. If you have not already done so, copy the files for this example as follows:

    1. Copy the following folder that ships with MATLAB to your work folder:

      matlabroot\toolbox\javabuilder\Examples\PlotExample
      
    2. At the MATLAB command prompt, cd to the new PlotExample subfolder in your work folder.

  2. If you have not already done so, set the environment variables that are required on a development machine. See Configure Your Java Environment.

  3. Write the drawplot.m function as you would any MATLAB function.

    The following code defines the drawplot.m function:

    function drawplot(x,y)
    plot(x,y);
    

    This code is already in your work folder in PlotExample\PlotDemoComp\drawplot.m.

  4. While in MATLAB, issue the following command to open the Library Compiler app:

    libraryCompiler
  5. You create a Java package by using the Library Compiler app to build a Java class that wraps around your MATLAB code.

    To create the Java package the Library Compiler app, use the following information as you work through this example in Compile Java Packages with Library Compiler App:

    Project Nameplotdemo
    Class Nameplotter
    File to compiledrawplot.m

  6. Write source code for an application that accesses the MATLAB function.

    The sample application for this example is in matlabroot\toolbox\javabuilder\Examples\PlotExample\PlotDemoJavaApp\createplot.java.

    The program graphs a simple parabola from the equation y = x2 .

    The program listing is shown here.

     createplot.java

    The program does the following:

    • Creates two arrays of double values, using MWNumericArray to represent the data needed to plot the equation.

    • Instantiates the plotter class as thePlot object, as shown:

      thePlot = new plotter();
    • Calls the drawplot method to plot the equation using the MATLAB plot function, as shown:

      thePlot.drawplot(x,y);
      
    • Uses a try-catch block to catch and handle any exceptions.

  7. Compile the createplot application using javac. When entering this command, ensure there are no spaces between path names in the matlabroot argument. For example, there should be no space between javabuilder.jar; and .\distrib\plotdemo.jar in the following example. cd to your work folder. Ensure createplot.java is in your work folder

    • On Windows®, execute this command:

      javac -classpath
        .;matlabroot\toolbox\javabuilder\jar\javabuilder.jar;
        .\distrib\plotdemo.jar createplot.java
      
    • On UNIX®, execute this command:

      javac -classpath
        .:matlabroot/toolbox/javabuilder/jar/javabuilder.jar:
        ./distrib/plotdemo.jar createplot.java
      
  8. Run the application.

    To run the createplot.class file, do one of the following:

    • On Windows, type:

      java -classpath
        .;matlabroot\toolbox\javabuilder\jar\javabuilder.jar;
        .\distrib\plotdemo.jar 
        createplot
      
    • On UNIX, type:

      java -classpath
        .:matlabroot/toolbox/javabuilder/jar/javabuilder.jar:
        ./distrib/plotdemo.jar 
         createplot
      

      Note:   You should be using the same version of Java that ships with MATLAB. To find out what version of Java MATLAB is running, enter the following MATLAB command:

      version -java

        Caution   MathWorks only supports the Oracle® JDK™ and JRE™. A certain measure of cross-version compatibility resides in the Oracle software and it may be possible to run applications with compiled MATLAB functions with non-Oracle JDKs under some circumstances—however, compatibility is not guaranteed.

    The createplot program should display the output.

Was this topic helpful?