最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。
C++ MEX API を使用して、C++ プログラムの効率性を備え、かつ MATLAB から外部関数および外部ライブラリにアクセスできる MATLAB 関数を作成します。C++ MEX API は以下の機能を提供します。
最新の C++ プログラミング機能およびオブジェクト指向の設計を使用。
MEX 関数から MATLAB 関数を呼び出し。
MATLAB から入力を取得しそこに結果を返すことで、MATLAB とシームレスに統合。
MATLAB データ型およびコピーオンライト セマンティクスをサポート。
スレッドセーフなマルチスレッド MEX 関数を作成。
アウトプロセスで C++ MEX 関数を実行。
メモ
MATLAB C++ API 内の関数は、MATLAB データ APIで定義される matlab::data::Array
クラスを使用します。MEX 関数を R2017b 以前の MATLAB で実行しなければならない場合、または C 言語での作業が望ましい場合は、mxArray
データ構造体で機能するC 行列 APIを代わりに使用してください。詳細については、C からの MATLAB の呼び出しを参照してください。
MEX ファイルは、C++ で作成された MATLAB 関数を実装します。
基本的な C++ MEX 関数を作成する方法は次のとおりです。
さまざまなプラットフォームで MEX アプリケーションをビルドする。
事前定義された C++ MEX ファイルを使用して、ビルド環境をテストします。
C++11 の機能と C++ エンジン API を使用して、MEX 関数を実装します。
関数呼び出し演算子 ()
をオーバーライドするクラスを実装して、ファンクター オブジェクトを作成します。
メモリの使用量を削減し、実行速度を改善するために、大きな配列のコピーを回避するテクニック。
MexFunction
クラスをカスタマイズして、MEX 関数で使用するリソースの処理を改善します。
入力のサイズと型をチェックし、MATLAB でエラー メッセージを表示。
MEX 関数は、MATLAB コマンド ウィンドウに出力を表示できます。
matlab::engine::MATLABEngine::fevalAsync
のような async
要求で MATLAB に呼び戻す際の動作
型付き配列、cell 配列および構造体配列のデータ アクセス
cell 配列と構造体配列を使用すると、配列全体をコピーすることなく、配列の内容に書き込むことができます。
MATLAB と MEX 関数の間で受け渡すデータの正しいデータ型を定義する。
引数を MEX 関数との間で受け渡す MATLAB 関数を呼び出します。
MEX 関数でスローされた例外のキャッチ。
MATLAB ステートメントを実行して、呼び出し元のワークスペースに変数を作成する。
MEX 関数の個別のスレッドからの MATLAB の呼び出し
MEX 関数は、C++ エンジンの非同期 API を使用して、ユーザーが作成したスレッドから MATLAB を呼び出すことができます。
MATLAB プロセスとは別のプロセスで C++ MEX 関数を実行する。
MATLAB ベースおよびグローバル ワークスペースに対して変数を配置するか取得する。
MATLAB オブジェクトを MEX 関数に渡す。