引数の引き渡し
概要
MATLAB® 関数をカプセル化する場合、MATLAB Compiler SDK™ 製品は、作成するクラス メソッドの引数リストに MATLAB 関数の引数を追加します。したがって、MATLAB 関数が varargin
と varargout
の一方または両方を使用する場合、コンパイラはこれらの引数をクラス メソッドの引数リストに追加します。これらは、入力引数と出力引数の引数リストの最後に追加されます。
Variant
配列を作成し、配列の各要素をそれぞれの入力引数に代入することで、複数の引数を varargin
配列として渡せます。
入力引数と出力引数のマッピングの詳細については、Producing a COM Classを参照してください。
Microsoft Visual Basic プログラムでの varargin 配列の作成および使用
次の例では、y=foo(varargin)
という形式の MATLAB 関数をカプセル化するメソッドを呼び出すために、varargin
配列を作成しています。
MWComUtil
ユーティリティ ライブラリに含まれる MWUtil
クラスは varargin
パラメーターを作成するための補助関数 MWPack
を提供します。
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
Microsoft Visual Basic プログラムでの varargout の作成および使用
次の例では、varargout
引数を 3 つの個別の引数として処理します。この関数はユーティリティ ライブラリ内の関数 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
Microsoft Visual Basic コードから空の varargin を渡す
MATLAB では、関数への varargin
入力はオプションであり、関数呼び出しで含まれる、あるいは省略される可能性があります。ただし、Microsoft® Visual Basic® からの関数シグネチャはより厳格であり、varargin
が MATLAB 関数入力の間に存在する場合は、空にする場合でも VBA 呼び出しには varargin
を含めなければなりません。空の varargin
を渡すためには、Null
バリアントを渡します。渡された後、空の MATLAB cell 配列に変換されます。
VBA コードからの空の varargin の引き渡し
次の例では、空の varargin
を渡すために null のバリアントを渡す方法を示しています。
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