Simple Plot (C#)

Purpose

The drawgraph function displays a plot of input parameters x and y. The purpose of the example is to show you how to:

  • Use the MATLAB® Compiler SDK™ product to convert a MATLAB function (drawgraph) to a method of a .NET class (Plotter) and wrap the class in a .NET assembly (PlotComp).

  • Access the component in a C# application (PlotApp.cs) by instantiating the Plotter class and using the MWArray class library to handle data conversion.

      Note:   For information about these data conversion classes, see the MATLAB MWArray Class Library Reference, available in the matlabroot\help\dotnetbuilder\MWArrayAPI folder, where matlabroot represents your MATLAB installation folder

  • Build and run the PlotCSApp application, using the Visual Studio® .NET development environment.

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 the MATLAB product to your work folder:

      matlabroot\toolbox\dotnetbuilder\Examples\VSVersion\NET\PlotExample
    2. At the MATLAB command prompt, change folder to the new PlotExample\PlotComp subfolder in your work folder.

  2. Write the drawgraph function as you would any MATLAB function.

    This code is already in your work folder in PlotExample\PlotComp\drawgraph.m.

  3. From the MATLAB apps gallery, open the Library Compiler app.

  4. Build the .NET component. See the instructions in Create a .NET Assembly for more details. Use the following information:

    Project NamePlotComp
    Class NamePlotter
    File to compiledrawgraph.m

  5. Write source code for a C# application that accesses the component.

    The sample application for this example is in matlabroot\toolbox\dotnetbuilder\Examples\VSVersion\PlotExample
    \PlotCSApp\PlotApp.cs
    .

    The program listing is shown here.

    using System;
    
    using MathWorks.MATLAB.NET.Utility;
    using MathWorks.MATLAB.NET.Arrays;
    
    using PlotComp;
    
    namespace MathWorks.Examples.PlotApp
     {
      /// <summary>
      /// This application demonstrates plotting x-y data by graphing a simple 
      /// parabola into a MATLAB figure window. 
      /// </summary>
      class PlotCSApp
        {
          #region MAIN
    
          /// <summary>
          /// The main entry point for the application.
          /// </summary>
          [STAThread]
          static void Main(string[] args)
            {
              try
                {
                  const int numPoints= 10;  // Number of points to plot
    
                  // Allocate native array for plot values
                  double [,] plotValues= new double[2, numPoints];
    
                  // Plot 5x vs x^2
                  for (int x= 1; x <= numPoints; x++)
                    {
                      plotValues[0, x-1]= x*5;
                      plotValues[1, x-1]= x*x;
                    }
    
                  // Create a new plotter object
                  Plotter plotter= new Plotter();
    
                  // Plot the two sets of values - Note the ability to cast 
                                  the native array to a MATLAB numeric array
                  plotter.drawgraph((MWNumericArray)plotValues);
    
                  Console.ReadLine();  // Wait for user to exit application
                }
    
              catch(Exception exception)
                {
                  Console.WriteLine("Error: {0}", exception);
                }
            }
    
          #endregion
        }
      }
    
      
    
    
    

    The program does the following:

    • Creates two arrays of double values

    • Creates a Plotter object.

    • Calls the drawgraph method to plot the equation using the MATLAB plot function.

    • Uses MWNumericArray to represent the data needed by the drawgraph method to plot the equation.

    • Uses a try-catch block to catch and handle any exceptions.

    The statement

     Plotter plotter= new Plotter(); 

    creates an instance of the Plotter class, and the statement

    plotter.drawgraph((MWNumericArray)plotValues);
    

    explicitly casts the native plotValues to MWNumericArray and then calls the method drawgraph.

  6. Build the PlotCSApp application using Visual Studio .NET.

    1. The PlotCSApp folder contains a Visual Studio .NET project file for this example. Open the project in Visual Studio .NET by double-clicking PlotCSApp.csproj in Windows® Explorer. You can also open it from the desktop by right-clicking PlotCSApp.csproj > Open Outside MATLAB.

    2. Add a reference to the MWArray component, which is matlabroot\toolbox\dotnetbuilder\bin\architecture\framework_version\mwarray.dll.

    3. Add or, if necessary, fix the location of a reference to the PlotComp component which you built in a previous step. (The component, PlotComp.dll, is in the \PlotExample\PlotComp\x86\V2.0\Debug\distrib subfolder of your work area.)

  7. Build and run the application in Visual Studio .NET.

Was this topic helpful?