可変数の引数をもつ関数の統合
この例では、1 つだけではなく可変数の引数を受け取る MATLAB® 関数を使用して .NET アプリケーションを作成する方法について説明します。
この例では、以下の手順を実行します。
MATLAB Compiler SDK™ 製品を使用して、MATLAB 関数
drawgraph
を .NET クラス (Plotter
) のメソッドに変換し、.NET アセンブリ (VarArgComp
) でそのクラスをラップします。関数drawgraph
は入力パラメーターのプロットを表示し、Plotter
クラスのメソッドとして呼び出されます。Plotter
クラスをインスタンス化し、MWArray
を使用してデータを表すことで、C# アプリケーション (VarArgApp.cs
) または Visual Basic® アプリケーション (VarArgApp.vb
) でコンポーネントにアクセスします。Visual Studio® .NET 開発環境を使用して
VarArgDemoApp
アプリケーションをビルドして実行します。
ファイル
MATLAB 関数 | drawgraph.m extractcoords.m |
MATLAB 関数の場所 |
|
C# コードの場所 |
|
Visual Basic コードの場所 |
|
手順
MATLAB 製品に付属している以下のフォルダーを作業フォルダーにコピーします。
matlabroot\toolbox\dotnetbuilder\Examples\VSVersion\NET\VarArgExample
MATLAB コマンド プロンプトで、作業フォルダー内の新しい
VarArgExample\VarArgComp
サブフォルダーに移動します。関数
drawgraph
およびextractcoords
を確認します。function [xyCoords] = DrawGraph(colorSpec, varargin) numVarArgIn= length(varargin); xyCoords= zeros(numVarArgIn, 2); for idx = 1:numVarArgIn xCoord = varargin{idx}(1); yCoord = varargin{idx}(2); x(idx) = xCoord; y(idx) = yCoord; xyCoords(idx,1) = xCoord; xyCoords(idx,2) = yCoord; end xmin = min(0, min(x)); ymin = min(0, min(y)); axis([xmin fix(max(x))+3 ymin fix(max(y))+3]) plot(x, y, 'color', colorSpec);
function [varargout] = ExtractCoords(coords) for idx = 1:nargout varargout{idx}= coords(idx,:); end
次の情報を使用して、ライブラリ コンパイラ アプリまたは
compiler.build.dotNETAssembly
によって .NET コンポーネントをビルドします。フィールド 値 ライブラリ名 VarArgComp
クラス名 Plotter
コンパイル対象ファイル extractcoords.m
drawgraph.m
たとえば、
compiler.build.dotNETAssembly
を使用している場合は、以下を入力します。buildResults = compiler.build.dotNETAssembly(["extractcoords.m","drawgraph.m"], ... 'AssemblyName','VarArgComp', ... 'ClassName','Plotter');
詳細については、.NET アセンブリの生成と .NET アプリケーションのビルドの手順を参照してください。
コンポーネントにアクセスするために C# または Visual Basic のどちらを使用するのかを決定します。
C#
C# を使用する場合は、コンポーネントにアクセスする C# アプリケーションのソース コードを作成します。
この例のサンプル アプリケーションは
VarArgExample\VarArgCSApp\VarArgApp.cs
にあります。以下のステートメントは、
drawgraph
メソッドを呼び出す代替方法です。data= (MWNumericArray)plotter.drawgraph(colorSpec, coords[0], coords[1], coords[2],coords[3], coords[4]); ... data= (MWNumericArray)plotter.drawgraph((MWArray)colorSpec, coords);
Visual Basic
Visual Basic を使用する場合は、コンポーネントにアクセスする Visual Basic アプリケーションのソース コードを作成します。
この例のサンプル アプリケーションは
VarArgExample\VarArgVBApp\VarArgApp.vb
にあります。以下のステートメントは、
drawgraph
メソッドを呼び出す代替方法です。data = CType(plotter.drawgraph(colorSpec, coords(0), coords(1), coords(2), coords(3), coords(4)), MWNumericArray) ... data = CType(plotter.drawgraph(colorSpec, coords), MWNumericArray)
いずれの場合も、
VarArgApp
プログラムにより次が実行されます。MWArray
クラス ライブラリを使用して 3 つの配列 (colorSpec
、data
、およびcoords
) を初期化するPlotter
オブジェクトを作成するextracoords
メソッドおよびdrawgraph
メソッドを呼び出すMWNumericArray
を使用して、メソッドで必要なデータを表すtry-catch
ブロックを使用して例外をキャッチして処理する
Visual Studio を使用して、ご使用のアプリケーション言語に対応した .NET プロジェクト ファイルを開きます。
C#
C# を使用する場合は、
VarArgCSApp
フォルダーにこの例の Visual Studio .NET プロジェクト ファイルが含まれています。Windows® エクスプローラーでVarArgCSApp.csproj
をダブルクリックして、Visual Studio .NET でプロジェクトを開きます。[VarArgCSApp.csproj] を右クリックし、[MATLAB の外部で開く] を選択して、デスクトップから開くこともできます。Visual Basic
Visual Basic を使用する場合は、
VarArgVBApp
フォルダーにこの例の Visual Studio .NET プロジェクト ファイルが含まれています。Windows エクスプローラーでVarArgVBApp.vbproj
をダブルクリックして、Visual Studio .NET でプロジェクトを開きます。[VarArgVBApp.vbproj] を右クリックし、[MATLAB の外部で開く] を選択して、デスクトップから開くこともできます。
アセンブリを生成またはインストールしたフォルダーにあるアセンブリ ファイル
VarArgComp.dll
への参照を作成します。MWArray
API への参照を作成します。MATLAB がシステムにインストールされている場合 matlabroot
\toolbox\dotnetbuilder\bin\win64\<framework_version>
\MWArray.dllMATLAB Runtime がシステムにインストールされている場合 <MATLAB_RUNTIME_INSTALL_DIR>
\toolbox\dotnetbuilder\bin\win64\<framework_version>
\MWArray.dllVisual Studio .NET で
VarArgApp
アプリケーションをビルドして実行します。プログラムにより、次の出力が表示されます。
result= 1 2 2 4 3 6 4 8 5 10
参考
ライブラリ コンパイラ | compiler.build.dotNETAssembly
| deploytool