Variable Number of Arguments

Note

This example is similar to Integrating a Simple MATLAB Function, except that the MATLAB® function to be encapsulated takes a variable number of arguments instead of just one.

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

  • How to use the MATLAB Compiler SDK™ product to convert a MATLAB function, drawgraph, which takes a variable number of arguments, to a method of a .NET class (Plotter) and wrap the class in a .NET assembly (VarArgComp). The drawgraph function (which can be called as a method of the Plotter class) displays a plot of the input parameters.

  • How to access the component in a C# application (VarArgApp.cs) by instantiating the Plotter class and using MWArray to represent data.

    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

  • How to build and run the VarArgDemoApp application, using the Visual Studio® .NET development environment.

Step-by-Step 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\VarArgExample
      
    2. At the MATLAB command prompt, cd to the new VarArgExample subfolder in your work folder.

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

    The code for the functions in this example is as follows:

     drawgraph.m

     extractcoords.m

    This code is already in your work folder in \VarArgExample\VarArgComp\.

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

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

    Project NameVarArgComp
    Class NamePlotter
    File to compileextractcoords.m   drawgraph.m

  5. Write source code for an application that accesses the component.

    The sample application for this example is in VarArgExample\VarArgCSApp\VarArgApp.cs.

    The program listing is shown here.

     VarArgApp.cs

    The program does the following:

    • Initializes three arrays (colorSpec, data, and coords) using the MWArray class library

    • Creates a Plotter object

    • Calls the extracoords and drawgraph methods

    • Uses MWNumericArray to represent the data needed by the methods

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

    The following statements are alternative ways to call the drawgraph method:

    data= (MWNumericArray)plotter.drawgraph(colorSpec, 
                    coords[0], coords[1], coords[2],coords[3], coords[4]);
    ...
    data= (MWNumericArray)plotter.drawgraph((MWArray)colorSpec, coords);
    
  6. Build the VarArgApp application using Visual Studio .NET.

    1. The VarArgCSApp folder contains a Visual Studio .NET project file for this example. Open the project in Visual Studio .NET by double-clicking VarArgCSApp.csproj in Windows® Explorer. You can also open it from the desktop by right-clicking VarArgCSApp.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 VarArgComp component which you built in a previous step. (The component, VarArgComp.dll, is in the \VarArgExample\VarArgComp\x86\v4.0\debug\distrib subfolder of your work area.)

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