最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

C++ MEX アプリケーション

最新の C++ で実装される高性能な MATLAB® 関数の作成

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 の呼び出しを参照してください。

C++ クラス

matlab::mex::FunctionC++ MEX 関数の基底クラス
matlab::mex::ArgumentListC++ MEX 関数からの入力および出力のコンテナー

アウトプロセスでの実行

mexhostC++ MEX 関数のホスト プロセスの作成
fevalMEX ホスト プロセスでの C++MEX 関数の評価
matlab.mex.MexHostC++ MEX 関数のプロセス ホスト外の実行

トピック

C++ MEX 関数の作成の開始

C++ MEX 関数

MEX ファイルは、C++ で作成された MATLAB 関数を実装します。

C++ MEX ソース ファイルの作成

基本的な C++ MEX 関数を作成する方法は次のとおりです。

MEX ファイルのセットアップおよびビルド

C++ MEX プログラムのビルド

さまざまなプラットフォームで MEX アプリケーションをビルドする。

ビルド環境のテスト

事前定義された C++ MEX ファイルを使用して、ビルド環境をテストします。

C++ MEX API

C++11 の機能と C++ エンジン API を使用して、MEX 関数を実装します。

C++ MEX 関数の設計

C++ MEX 関数の構造

関数呼び出し演算子 () をオーバーライドするクラスを実装して、ファンクター オブジェクトを作成します。

MEX 関数における配列のコピーの回避

メモリの使用量を削減し、実行速度を改善するために、大きな配列のコピーを回避するテクニック。

MEX 関数から外部リソースを管理

MexFunction クラスをカスタマイズして、MEX 関数で使用するリソースの処理を改善します。

入力と出力の処理

入力のサイズと型をチェックし、MATLAB でエラー メッセージを表示。

MATLAB コマンド ウィンドウでの出力の表示

MEX 関数は、MATLAB コマンド ウィンドウに出力を表示できます。

mexCallMATLAB を使用した async 要求

matlab::engine::MATLABEngine::fevalAsync のような async 要求で MATLAB に呼び戻す際の動作

MEX 関数における MATLAB データ型

型付き配列、cell 配列および構造体配列のデータ アクセス

cell 配列と構造体配列を使用すると、配列全体をコピーすることなく、配列の内容に書き込むことができます。

MEX 関数のデータを渡すためのデータ型

MATLAB と MEX 関数の間で受け渡すデータの正しいデータ型を定義する。

MATLAB 関数の呼び出し

MEX 関数からの MATLAB 関数の呼び出し

引数を MEX 関数との間で受け渡す MATLAB 関数を呼び出します。

MEX 関数での例外のキャッチ

MEX 関数でスローされた例外のキャッチ。

MEX 関数からの MATLAB ステートメントの実行

MATLAB ステートメントを実行して、呼び出し元のワークスペースに変数を作成する。

個別のスレッドとプロセス

MEX 関数の個別のスレッドからの MATLAB の呼び出し

MEX 関数は、C++ エンジンの非同期 API を使用して、ユーザーが作成したスレッドから MATLAB を呼び出すことができます。

C++ MEX 関数のアウトプロセスでの実行

MATLAB プロセスとは別のプロセスで C++ MEX 関数を実行する。

MATLAB 変数へのアクセス

MEX からの MATLAB 変数の設定と取得

MATLAB ベースおよびグローバル ワークスペースに対して変数を配置するか取得する。

MEX 関数の MATLAB オブジェクト

MATLAB オブジェクトを MEX 関数に渡す。