После создания образца класса можно вызвать методы класса для доступа к инкапсулированному MATLAB® функций. Продукт MATLAB Compiler SDK™ использует стандартный метод, чтобы сопоставить исходный синтаксис функции MATLAB со списком аргументов метода. Этот стандартный метод отображения следующий:
nargout
Когда метод имеет выходные аргументы, первый аргумент всегда nargout, который имеет тип Long. Этот входной параметр передает нормальный MATLAB nargout параметр инкапсулированной функции и определяет, сколько выходов запрашивается. Методы, которые не имеют выходных аргументов, не проходят nargout аргумент.
Выходные параметры
Следующие nargout являются выходными параметрами, перечисленными в том же порядке, в котором они появляются на левой стороне исходной функции MATLAB.
Входные параметры
Далее идут входные параметры, перечисленные в том же порядке, в котором они появляются на правой стороне исходной функции MATLAB.
Для примера самая типовая функция MATLAB:
function [Y1, Y2, ..., varargout] = foo(X1, X2, ..., varargin)
Эта функция сопоставлена непосредственно со следующей корпорацией Майкрософт® Визуальный базовый® подпись:
Sub foo(nargout As Long, _
Y1 As Variant, _
Y2 As Variant, _
.
.
varargout As Variant, _
X1 As Variant, _
X2 As Variant, _
.
.
varargin As Variant)
Для получения дополнительной информации и примеров стандартного отображения функций MATLAB в вызовы методов COM см. раздел «Соглашения о классах».
Все входные и выходные аргументы вводятся как Variant, тип данных Visual Basic по умолчанию. The Variant тип может содержать любой из базовых типов Visual Basic, массивов любого типа и ссылок на объекты. Для получения дополнительной информации о преобразовании любого базового типа в типы данных MATLAB и из них см. раздел Преобразование данных.
В целом можно задать любой тип Visual Basic в качестве аргумента для метода класса, за исключением определяемых пользователем типов Visual Basic (UDT).
Когда вы проходите простой Variant type как выходной параметр, вызываемый метод назначает полученные данные и освобождает исходное содержимое Variant. В этом случае достаточно измерить каждый выходной аргумент как одну Variant. Когда тип объекта (например, Excel® Range) передается как выходной параметр, ссылка на объект передается в обоих направлениях, и Value объекта свойство получает данные.
Следующие примеры показывают, как передать входные и выходные параметры методам класса COM-компонента в Visual Basic.
Первый пример является функцией, foo, который принимает два аргумента и возвращает один выходной аргумент. The foo функция отправляет вызов в метод класса, который соответствует функции MATLAB формы 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
Второй пример переписывает foo функция как стандартная подпрограмма:
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