Передайте аргументы

Обзор

Когда это инкапсулирует функции MATLAB®, продукт MATLAB Compiler SDK™ добавляет аргументы функции MATLAB в список аргументов методов класса, которые это создает. Таким образом, если функция MATLAB использует varargin и/или varargout, компилятор добавляет эти аргументы в список аргументов метода класса. Они добавляются в конце списка аргументов для аргументов ввода и вывода.

Можно передать несколько аргументов как массив varargin путем создания массива Variant, присвоения каждого элемента массива к соответствующему входному параметру.

Смотрите Создание COM-класса для получения дополнительной информации об отображении аргументов ввода и вывода.

Создайте и Использование varargin Массив в Программах Microsoft Visual Basic

Следующий пример создает массив varargin, чтобы вызвать метод, инкапсулирующий функцию MATLAB формы y=foo(varargin).

Класс MWUtil, включенный в сервисную библиотеку MWComUtil, обеспечивает функцию помощника MWPack, чтобы создать параметры varargin.

Function foo(x1 As Variant, x2 As Variant, x3 As Variant, _
             x4 As Variant, x5 As Variant) As Variant
   Dim aClass As Object
   Dim v(1 To 5) As Variant
   Dim y As Variant 
   
   On Error Goto Handle_Error
   v(1) = x1
   v(2) = x2
   v(3) = x3
   v(4) = x4
   v(5) = x5
   aClass = CreateObject("mycomponent.myclass.1_0")
   Call aClass.foo(1,y,v)
   foo = y
   Exit Function
Handle_Error:
   foo = Err.Description
End Function

Создайте и Использование varargout в Программах Microsoft Visual Basic

Следующий пример обрабатывает аргумент varargout в качестве трех отдельных аргументов. Эта функция использует функцию MWUnpack в служебной библиотеке.

Используемой функцией MATLAB является varargout=foo(x1,x2).

Sub foo(Xout1 As Variant, Xout2 As Variant, Xout3 As Variant, _
        Xin1 As Variant, Xin2 As Variant)
   Dim aClass As Object
   Dim aUtil As Object
   Dim v As Variant
    
   On Error Goto Handle_Error
   aUtil = CreateObject("MWComUtil.MWUtil")
   aClass = CreateObject("mycomponent.myclass.1_0")
   Call aClass.foo(3,v,Xin1,Xin2)
   Call aUtil.MWUnpack(v,0,True,Xout1,Xout2,Xout3)
   Exit Sub
Handle_Error:
   MsgBox(Err.Description)
End Sub

Передайте Пустой varargin Из Кода Microsoft Visual Basic

В MATLAB входные параметры функций varargin являются дополнительными, и могут присутствовать или не использованы от вызова функции. Однако от Microsoft® Visual Basic®, функциональные подписи более строги — если varargin присутствует среди входных параметров функции MATLAB, вызов VBA должен включать varargin, даже если вы хотите, чтобы он был пуст. Чтобы передать в пустом varargin, передайте вариант Null, который преобразован в пустой массив ячеек MATLAB, когда передано.

Передача Пустого varargin Из Кода VBA

Следующий пример иллюстрирует, как передать пустой вариант в порядке передать пустой varargin:

Function foo(x1 As Variant, x2 As Variant, x3 As Variant, _ 
             x4 As Variant, x5 As Variant) As Variant 
   Dim aClass As Object 
   Dim v(1 To 5) As Variant 
   Dim y As Variant 
    
   On Error Goto Handle_Error 
   v(1) = x1 
   v(2) = x2 
   v(3) = x3 
   v(4) = x4 
   v(5) = x5 
   aClass = CreateObject("mycomponent.myclass.1_0") 

   'Call aClass.foo(1,y,v) 
   Call aClass.foo(1,y,Null) 

   foo = y 
   Exit Function 
Handle_Error: 
   foo = Err.Description 
End Function