ドキュメンテーション センター

  • 評価版
  • 製品アップデート

目次

このページは前リリースの情報です。該当の英語のページはこのリリースで更新されています。このリリースの英語のドキュメンテーションを参照するには、言語設定を United States に変更してください。

MATLAB エンジンの使用方法

MATLAB エンジンについて

MATLAB® エンジン ライブラリには、独自のプログラムから MATLAB ソフトウェアを呼び出し、それによって MATLAB を計算エンジンとして使用するためのルーチンが含まれています。使用するシステムには MATLAB がインストールされていなければなりません。MATLAB Compiler Runtime (MCR) のみがインストールされているマシンでは MATLAB エンジンを実行できません。

エンジン プログラムは、スタンドアロンの C/C++ または Fortran プログラムで、UNIX® システムではパイプを使用し、Microsoft® Windows® システムでは Microsoft Component Object Model (COM) インターフェイスを使用して、個別の MATLAB プロセスと通信します。MATLAB の関数ライブラリを使用すると、MATLAB プロセスの開始および終了、MATLAB とのデータの送受信、および MATLAB の処理対象のコマンドの送信を行うことができます。

MATLAB エンジンによってできることには以下があります。

  • 独自のプログラムから配列の逆操作や FFT の計算を行うなどの数学ルーチンを呼び出します。この方法で使用されるとき、MATLAB は強力でプログラミング可能な数学サブルーチン ライブラリとなります。

  • たとえば、レーダーのシグネチャ解析やガス クロマトグラフィーのような、特定のタスク用のシステム全体を構築します。ここで、フロントエンド (GUI) は C/C++ でプログラミングされ、バックエンド (解析) は MATLAB でプログラミングされるので、開発時間を短縮できます。

MATLAB エンジンは、独自のプログラムとは別のプロセスとしてバックグラウンドで実行されます。これは、次のような利点があります。

  • UNIX システムでは、MATLAB エンジンは使用しているマシンでも、アーキテクチャが異なるマシンを含めてネットワーク上の他の UNIX マシンでも実行できます。これにより、ユーザーのワークステーションにユーザー インターフェイスを実装し、計算はネットワーク上の他の場所にあるより高速なマシンで行うことができます。詳細は、関数 engOpen のリファレンス ページを参照してください。

  • プログラムを MATLAB プログラム全体 (大量のコード) にリンクする代わりに、より小さなエンジン ライブラリにリンクします。

MATLAB エンジンは、HDF5 を基準とする形式の MAT ファイルを読み取ることができません。このような MAT ファイルは、関数 save-v7.3 オプションを使用して保存されるか、C または Fortran 関数 matOpenw7.3 モード引数を使用して開かれます。

    メモ:   MATLAB エンジンを UNIX プラットフォーム上で実行するためには、C シェル csh/bin/csh にインストールしておかなければなりません。

エンジン アプリケーションをビルドするための準備

エンジン アプリケーションを作成するには、C/C++ または Fortran のソース コードを変更および作成するためのツールと知識が必要です。特に、MATLAB でサポートされるコンパイラが必要です。サポートしているコンパイラの最新の一覧については、「Supported and Compatible Compilers」Web ページを参照してください。

アプリケーションで、以下の MATLAB C/C++ および Fortran の API 関数を使用します。

アプリケーションを作成するには、コンパイラ固有のエンジン オプション ファイルをもつ mex ビルド スクリプトを使用します。詳細は、「MEX コマンドを使用したエンジン アプリケーションのコンパイル」を参照してください。また、「IDE を使用したエンジン アプリケーションのコンパイル」で説明されているように、独自のビルド ツールも使用できます。

エンジン ライブラリ

エンジン ライブラリは MATLAB C/C++ および Fortran の API の一部です。エンジン ライブラリには、計算エンジンを制御するためのルーチンが含まれています。関数の名前は、すべて 3 文字の接頭辞 eng で始まります。

MATLAB ライブラリは、スレッドセーフではありません。したがって、マルチスレッド アプリケーションを作成する場合、1 つのスレッドのみがエンジン アプリケーションにアクセスするようにしてください。

C エンジン ルーチン

関数目的

engOpen

MATLAB エンジンの起動

engClose

MATLAB エンジンのシャットダウン

engGetVariable

エンジンからの MATLAB 配列の取得

engPutVariable

エンジンへの MATLAB 配列の送信

engEvalString

MATLAB コマンドの実行

engOutputBuffer

MATLAB テキスト出力を格納するバッファーの作成

engOpenSingleUse

共有されない単独使用のための MATLAB エンジン セッションの開始

engGetVisible

MATLAB エンジン セッションの可視性の判断

engSetVisible

MATLAB エンジン セッションの表示または非表示

Fortran エンジン ルーチン

関数目的

engOpen

MATLAB エンジンの起動

engClose

MATLAB エンジンのシャットダウン

engGetVariable

エンジンからの MATLAB 配列の取得

engPutVariable

エンジンへの MATLAB 配列の送信

engEvalString

MATLAB コマンドの実行

engOutputBuffer

MATLAB テキスト出力を格納するバッファーの作成

エンジン プログラムは C/C++ および Fortran の API の 「MX 行列ライブラリ」も使用します。このライブラリの詳細は、「MEX ファイルの概要」を参照してください。

MATLAB ソフトウェアとの通信

UNIX システムでは、エンジン ライブラリは、パイプと、必要に応じてリモート実行のための rsh を使用して、エンジンと通信を行います。Microsoft Windows システムでは、エンジン ライブラリは、Component Object Model (COM) インターフェイスを使用して、エンジンと通信を行います。詳細は、「MATLAB COM の統合」を参照してください。

GUI 集約型のアプリケーション

MATLAB エンジンを通じて多くのコールバックを実行するグラフィカル ユーザー インターフェイス (GUI) 集約型のアプリケーションがある場合は、これらのコールバックをベース ワークスペースのコンテキストで評価させる必要があります。関数 evalin を使用して、以下のようにベース ワークスペースをコールバック式の評価に使用するように指定します。

engEvalString(ep, "evalin('base', expression)")

この方法でベース ワークスペースを指定することにより、MATLAB はコールバックを正しく処理し、その呼び出しに対する結果を確実に返します。

これは、コールバックを実行しない計算アプリケーションには適用されません。

この情報は役に立ちましたか?