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