После создания образца класса можно вызвать методы класса для доступа к инкапсулированному 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