12

MATLAB 関数を開発しました。別の C# アプリケーションからその関数を呼び出し、いくつかのパラメーターを渡して C# プログラムで結果を取得する方法を探しています。

Dynamic Data Exchange (DDE) または COM オブジェクトを使用できると聞きましたが、実際に使用できますか?

4

3 に答える 3

21

MATLABCentralには良い例があります。

これは、 MATLABと通信する方法に関する3つの方法を示しています。

  1. COM
  2. MATLAB .NET Bulider
  3. MATLABコンパイラ

COM(私はそれについての経験がありません)

短所:MATLABをターゲットコンピューターにインストールする必要があります。

MATLAB .NET Builderは、MATLABコードを.NETアセンブリにコンパイルし、直接使用できます。

長所:MATLABをターゲットコンピューターにインストールする必要はありません

短所:それは高価です

MATLABコンパイラは、MATLABコードをC /C++ライブラリまたはEXEファイルにコンパイルします。P/Invokeで使用できます。

長所:MATLABをターゲットコンピューターにインストールする必要はありません

短所:高価で、P/Invokeがたくさんあります。

于 2011-05-05T21:14:17.257 に答える
5

3 番目のオプション: delegatesがあります。MATLAB の起動 -> .NET アセンブリの読み込み -> MATLAB 関数へのデリゲート ハンドルを使用して .NET 関数を実行します。

于 2011-05-05T21:17:24.440 に答える
2

このサイトには、すべてをセットアップするための優れた例があります。MATLAB .NET 配布ツールを使用できます。

必要がある

  • MCR (Matlab コンパイラ ランタイム) をインストールします。
  • Matlab Deploy Tool を使用して、Matlab 関数を .NET アセンブリに展開します。これにより、.dll ファイルが作成されます。
  • .NET プロジェクト内に .dll 参照を追加します。
  • MATLAB.NET への参照を追加します。

この方法の利点は、ターゲット マシンに MATLAB をインストールする必要がないことですが、実行にかなりのコストがかかるという欠点があります。

于 2015-08-29T17:00:59.703 に答える