After you create a class instance, you can call the class methods to access the encapsulated MATLAB® functions. The MATLAB Compiler SDK™ product uses a standard technique to map the original MATLAB function syntax to the method's argument list. This standard mapping technique is as follows:
nargout
When a method has output arguments, the first argument is always nargout
,
which is of type Long
. This input parameter passes
the normal MATLAB nargout
parameter to the
encapsulated function and specifies how many outputs are requested.
Methods that do not have output arguments do not pass a nargout
argument.
Output parameters
Following nargout
are the output parameters
listed in the same order as they appear on the left side of the original MATLAB function.
Input parameters
Next come the input parameters listed in the same order as they appear on the right side of the original MATLAB function.
For example, the most generic MATLAB function is:
function [Y1, Y2, ..., varargout] = foo(X1, X2, ..., varargin)
This function maps directly to the following Microsoft® Visual Basic® signature:
Sub foo(nargout As Long, _ Y1 As Variant, _ Y2 As Variant, _ . . varargout As Variant, _ X1 As Variant, _ X2 As Variant, _ . . varargin As Variant)
See Calling Conventions for more details and examples of the standard mapping from MATLAB functions to COM class method calls.
All input and output arguments are typed as Variant
,
the default Visual Basic data type. The Variant
type
can hold any of the basic Visual Basic types, arrays of any type,
and object references. See Data Conversion for details about the conversion of
any basic type to and from MATLAB data types.
In general, you can supply any Visual Basic type as an argument to a class method, with the exception of Visual Basic User Defined Types (UDTs).
When you pass a simple Variant
type as an
output parameter, the called method allocates the received data and
frees the original contents of the Variant
. In
this case it is sufficient to dimension each output argument as a
single Variant
. When an object type (like an Excel® Range
)
is passed as an output parameter, the object reference is passed in
both directions, and the object's Value
property
receives the data.
The following examples show how to pass input and output parameters to COM component class methods in Visual Basic.
The first example is a function, foo
, that
takes two arguments and returns one output argument. The foo
function
dispatches a call to a class method that corresponds to a MATLAB function
of the form function y = foo(x1,x2)
.
Function foo(x1 As Variant, x2 As Variant) As Variant Dim aClass As Object Dim y As Variant On Error Goto Handle_Error Set aClass = CreateObject("mycomponent.myclass.1_0") Call aClass.foo(1,y,x1,x2) foo = y Exit Function Handle_Error: foo = Err.Description End Function
The second example rewrites the foo
function
as a subroutine:
Sub foo(Xout As Variant, X1 As Variant, X2 As Variant) Dim aClass As Object On Error Goto Handle_Error Set aClass = CreateObject("mycomponent.myclass.1_0") Call aClass.foo(1,Xout,X1,X2) Exit Sub Handle_Error: MsgBox(Err.Description) End Sub