.NET アプリケーションへの単純な MATLAB 関数の統合
メモ
MATLAB® Compiler SDK™ 製品の例は にあります。ここで、matlabroot\toolbox\dotnetbuilder\Examples\VSVersion\NETVS は、使用している Microsoft® Visual Studio® .NET のバージョンを示します。Visual Studio で以下のソリューションを開くことにより、すべての例についてプロジェクトを読み込むことができます。Version
matlabroot\toolbox\dotnetbuilder\Examples\VSVersion\NET\DotNetExamples.sln単純なプロットの例では、MATLAB 関数を呼び出してプロットを表示する .NET アセンブリを作成する方法について説明します。MATLAB 関数を使用して構造体配列を変更する例については、電話帳を参照してください。
以下の例では、次の手順を実行して MATLAB 関数を .NET アプリケーションに統合します。
MATLAB Compiler SDK 製品を使用して、MATLAB 関数を .NET クラスのメソッドに変換し、.NET アセンブリでそのクラスをラップします。
.NET クラスをインスタンス化し、
MWArrayクラス ライブラリを使用してデータ変換を処理して、C# アプリケーションまたは Visual Basic® アプリケーションでコンポーネントにアクセスします。Visual Studio .NET 開発環境を使用して、生成されたアプリケーションをビルドして実行します。
前提条件
MATLAB Compiler SDK の .NET ターゲット要件をすべて満たしていることを確認します。詳細については、MATLAB Compiler SDK の .NET ターゲットの要件を参照してください。
Microsoft Visual Studio がインストールされていることを確認します。
アプリケーションの実行には、エンド ユーザーによる MATLAB Runtime のインストールが必要です。詳細については、MATLAB Runtime のダウンロードとインストールを参照してください。
テスト目的で、MATLAB Runtime の代わりに MATLAB のインストールを使用することができます。
単純なプロットの作成
ファイル
| MATLAB 関数の場所 | |
| C# コードの場所 | |
| Visual Basic コードの場所 | |
手順
MATLAB 製品に付属している以下のフォルダーを作業フォルダーにコピーします。
matlabroot\toolbox\dotnetbuilder\Examples\VSVersion\NET\PlotExample
MATLAB コマンド プロンプトで、作業フォルダー内の
PlotExample\PlotCompサブフォルダーに移動します。PlotExample\PlotCompにある関数drawgraphを確認します。MATLAB コマンド プロンプトでこの関数をテストします。function drawgraph(coords) plot(coords(1,:), coords(2,:)); pause(5)x = 0:0.01:10; y = sin(x); z = [x;y]; drawgraph(z)
この関数により、正弦波を表示する Figure が出力されます。
次の情報を使用して、.NET アセンブリ コンパイラ アプリまたは
compiler.build.dotNETAssemblyで .NET コンポーネントをビルドします。フィールド 値 ライブラリ名 PlotCompクラス名 Plotterコンパイルするファイル drawgraph.mたとえば、
compiler.build.dotNETAssemblyを使用している場合は、以下を入力します。buildResults = compiler.build.dotNETAssembly('drawgraph.m', ... 'AssemblyName','PlotComp', ... 'ClassName','Plotter');
詳細については、.NET アセンブリの生成と .NET アプリケーションのビルドの手順を参照してください。
コンポーネントにアクセスするために C# または Visual Basic のどちらを使用するのかを決定します。
C#
C# を使用する場合は、コンポーネントにアクセスする C# アプリケーションのソース コードを作成します。
この例のサンプル アプリケーションは
PlotExample\PlotCSApp\PlotApp.csにあります。次のステートメントは、
Plotterクラスのインスタンスを作成します。Plotter plotter= new Plotter();次のステートメントは、ネイティブ
plotValuesをMWNumericArrayに明示的にキャストしてから、メソッドdrawgraphを呼び出します。plotter.drawgraph((MWNumericArray)plotValues);Visual Basic
Visual Basic を使用する場合は、コンポーネントにアクセスする Visual Basic アプリケーションのソース コードを作成します。
この例のサンプル アプリケーションは
PlotExample\PlotVBApp\PlotApp.vbにあります。次のステートメントは、
Plotterクラスのインスタンスを作成します。Dim plotter As Plotter = New Plotter次のステートメントは、メソッド
drawgraphを呼び出します。plotter.drawgraph(coords)
いずれの場合も、
PlotAppプログラムにより次が実行されます。double 値をもつ 2 つの配列を作成する。
Plotterオブジェクトを作成する。drawgraphメソッドを呼び出し、MATLAB 関数plotを使用して方程式をプロットする。MWNumericArrayを使用して、drawgraphメソッドで方程式をプロットするために必要なデータを表す。try-catchブロックを使用して例外をキャッチして処理する。
Visual Studio を使用して、ご使用のアプリケーション言語に対応した .NET プロジェクト ファイルを開きます。
C#
C# を使用する場合は、
PlotCSAppフォルダーにこの例の Visual Studio .NET プロジェクト ファイルが含まれています。Windows® エクスプローラーでPlotCSApp.csprojをダブルクリックして、Visual Studio .NET でプロジェクトを開きます。[PlotCSApp.csproj] を右クリックし、[MATLAB の外部で開く] を選択して、デスクトップから開くこともできます。Visual Basic
Visual Basic を使用する場合は、
PlotVBAppフォルダーにこの例の Visual Studio .NET プロジェクト ファイルが含まれています。Windows エクスプローラーでPlotVBApp.vbprojをダブルクリックして、Visual Studio .NET でプロジェクトを開きます。[PlotVBApp.vbproj] を右クリックし、[MATLAB の外部で開く] を選択して、デスクトップから開くこともできます。
アセンブリを生成またはインストールしたフォルダーにあるアセンブリ ファイル
PlotComp.dllへの参照を追加します。MWArrayAPI への参照を追加します。MATLAB がシステムにインストールされている場合 matlabroot\toolbox\dotnetbuilder\bin\win64\<version>\MWArray.dllMATLAB Runtime がシステムにインストールされている場合 <MATLAB_RUNTIME_INSTALL_DIR>\toolbox\dotnetbuilder\bin\win64\<version>\MWArray.dllVisual Studio .NET で
PlotAppアプリケーションをビルドして実行します。アプリケーションにより、次のプロットが表示されます。

この例から発展させるには、以下のようにします。
生成されたアプリケーションを別のコンピューターで実行してみる。
compiler.package.installerを使用してパッケージ用のインストーラーをビルドしてみる。複数の関数で構成されたアセンブリを統合してみる。
電話帳の作成
この例では、MATLAB 関数を呼び出して、電話番号が含まれた構造体配列を変更する .NET アセンブリを作成します。
ファイル
| MATLAB 関数の場所 | |
| C# コードの場所 | |
| Visual Basic コードの場所 | |
手順
MATLAB に付属している以下のフォルダーを作業フォルダーにコピーします。
matlabroot\toolbox\dotnetbuilder\Examples\VSVersion\NET\PhoneBookExample
MATLAB コマンド プロンプトで、作業フォルダー内の
PhoneBookExample\PhoneBookCompサブフォルダーに移動します。PhoneBookExample\PhoneBookCompにある関数makephoneを確認します。function book = makephone(friends) book = friends; for i = 1:numel(friends) numberStr = num2str(book(i).phone); book(i).external = ['(508) 555-' numberStr]; end
MATLAB コマンド プロンプトでこの関数をテストします。
friends(1).name = "Jordan Robert"; friends(1).phone = 3386; friends(2).name = "Mary Smith"; friends(2).phone = 3912; struct2table(makephone(friends))
ans = 2×3 table name phone external _______________ _____ __________________ "Jordan Robert" 3386 {'(508) 555-3386'} "Mary Smith" 3912 {'(508) 555-3912'}次の情報を使用して、.NET アセンブリ コンパイラ アプリまたは
compiler.build.dotNETAssemblyで .NET コンポーネントをビルドします。フィールド 値 ライブラリ名 PhoneBookCompクラス名 PhoneBookコンパイルするファイル makephoneたとえば、
compiler.build.dotNETAssemblyを使用している場合は、以下を入力します。buildResults = compiler.build.dotNETAssembly('makephone.m', ... 'AssemblyName','PhoneBookComp', ... 'ClassName','PhoneBook');
詳細については、.NET アセンブリの生成と .NET アプリケーションのビルドの手順を参照してください。
コンポーネントにアクセスするために C# または Visual Basic のどちらを使用するのかを決定します。
C#
C# を使用する場合は、コンポーネントにアクセスする C# アプリケーションのソース コードを作成します。
この例のサンプル アプリケーションは
PhoneBookExample\PhoneBookCSApp\PhoneBookApp.csにあります。Visual Basic
Visual Basic を使用する場合は、コンポーネントにアクセスする Visual Basic アプリケーションのソース コードを作成します。
この例のサンプル アプリケーションは
\PhoneBookExample\PhoneBookVBApp\PhoneBookApp.vbにあります。
いずれの場合も、
PhoneBookAppプログラムにより次が実行されます。MWStructArray を使用して構造体配列を作成し、名前と電話番号が含まれた例の電話帳データを表す。
次のように
PhonebookクラスをthePhonebookオブジェクトとしてインスタンス化する。
thePhonebook = new phonebook();次のように、MATLAB 関数
makephoneを呼び出し、追加フィールドを追加することで構造体の変更コピーを作成する。
result = thePhonebook.makephone(1, friends);結果の構造体配列を表示する。
Visual Studio を使用して、ご使用のアプリケーション言語に対応した .NET プロジェクト ファイルを開きます。
C#
C# を使用する場合は、
PhoneBookCSAppフォルダーにこの例の Visual Studio .NET プロジェクト ファイルが含まれています。Windows エクスプローラーでPhoneBookCSApp.csprojをダブルクリックして、Visual Studio .NET でプロジェクトを開きます。[PhoneBookCSApp.csproj] を右クリックし、[MATLAB の外部で開く] を選択して、デスクトップから開くこともできます。Visual Basic
Visual Basic を使用する場合は、
PhoneBookVBAppフォルダーにこの例の Visual Studio .NET プロジェクト ファイルが含まれています。Windows エクスプローラーでPhoneBookVBApp.vbprojをダブルクリックして、Visual Studio .NET でプロジェクトを開きます。[PhoneBookVBApp.vbproj] を右クリックし、[MATLAB の外部で開く] を選択して、デスクトップから開くこともできます。
アセンブリを生成したフォルダーにあるアセンブリ ファイル
PhoneBookComp.dllへの参照を作成します。MWArrayAPI への参照を作成します。これは以下の場所にあります。MATLAB matlabroot\toolbox\dotnetbuilder\bin\win64\<version>\MWArray.dllMATLAB Runtime <MATLAB_RUNTIME_INSTALL_DIR>\toolbox\dotnetbuilder\bin\win64\<version>\MWArray.dllVisual Studio .NET で
PhoneBookCompアプリケーションをビルドして実行します。このアプリケーションにより、次の出力が表示されます。
Friends: 2x2 struct array with fields: name phone Result: 2x2 struct array with fields: name phone external Result record 2: Mary Smith 3912 (508) 555-3912 Entire structure: Number of Elements: 4 Dimensions: 2-by-2 Number of Fields: 3 Standard MATLAB view: 2x2 struct array with fields: name phone external Walking structure: Element 1 name: Jordan Robert phone: 3386 external: (508) 555-3386 Element 2 name: Mary Smith phone: 3912 external: (508) 555-3912 Element 3 name: Stacy Flora phone: 3238 external: (508) 555-3238 Element 4 name: Harry Alpert phone: 3077 external: (508) 555-3077
