可変数の引数をもつ関数の統合
この例では、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.mextractcoords.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
次の情報を使用して、.NET アセンブリ コンパイラ アプリまたは
compiler.build.dotNETAssemblyで .NET コンポーネントをビルドします。フィールド 値 ライブラリ名 VarArgCompクラス名 Plotterコンパイル対象ファイル extractcoords.mdrawgraph.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への参照を作成します。MWArrayAPI への参照を作成します。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
