.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 が出力されます。
次の情報を使用して、ライブラリ コンパイラ アプリまたは
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
への参照を追加します。MWArray
API への参照を追加します。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'}
次の情報を使用して、ライブラリ コンパイラ アプリまたは
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
への参照を作成します。MWArray
API への参照を作成します。これは以下の場所にあります。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
参考
ライブラリ コンパイラ | compiler.build.dotNETAssembly
| deploytool