После того, как вы создадите экземпляр класса, можно вызвать методы класса получить доступ к инкапсулированным функциям 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 Определяемые пользователем Типы (UDTs).
Когда вы передаете простой тип 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