メインコンテンツ

このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。

mexCallMATLAB (C)

R2026a

MATLAB 関数、ユーザー定義関数または MEX 関数の呼び出し

C 構文

#include "mex.h"
int mexCallMATLAB(int nlhs, mxArray *plhs[], int nrhs,
  mxArray *prhs[], const char *functionName);

説明

メモ

C および C++ ライブラリの関数を呼び出すには、ライブラリへの MATLAB® インターフェイスを作成する方法が推奨されます。詳細については、MATLAB からの C/C++ の呼び出しを参照してください。 (R2022a 以降)。また、C++ の機能とC++ 用の MATLAB データ APIを使用して MEX 関数を作成するには、MATLAB (MEX ファイル) から呼び出せる C++ 関数の記述を参照してください。

mexCallMATLAB を呼び出して、内部の MATLAB 数値関数、MATLAB 演算子、ユーザー定義関数、または他の MEX 関数を呼び出します。

mexCallMATLAB と mexEvalString の両方が MATLAB コマンドを実行します。結果 (左辺引数) を MEX 関数に返すには、mexCallMATLAB を使用します。関数 mexEvalString は、MEX 関数に値を返しません。

入力引数

すべて展開する

予期される出力 mxArrays の数。50 以下の整数として指定します。

mxArray 出力引数へのポインターの配列。

注意

mexCallMATLAB の plhs 引数は、mexFunction の plhs とは異なります。mexFunction の plhs に返された mxArray は破棄しないでください。

入力 mxArrays の数。50 以下の整数として指定します。

mxArray 入力引数へのポインターの配列。

呼び出し対象の MATLAB 組み込み関数、演算子、ユーザー定義関数または MEX 関数の名前。const char* として指定します。

functionName が演算子である場合は、"+" のように、演算子を二重引用符で囲みます。

出力引数

すべて展開する

関数は、成功した場合は 0、失敗した場合は非ゼロ値を返します。

エラー処理

functionName がエラーを検出した場合、MATLAB は MEX 関数を終了し、制御を MATLAB プロンプトに戻します。エラーをトラップするには、関数 mexCallMATLABWithTrap を使用します。

制限

  • Simulink® の S-Function では関数 mexCallMATLAB を使用しないでください。使用する場合は、MEX 関数の終了後に存続する S-Function ブロックの状態に、結果の plhs mxArray ポインターを格納しないでください。mexCallMATLAB の出力には一時スコープがあります。また、この出力は MEX 関数の呼び出しの終了時に自動的に破棄されます。

  • mexCallMATLAB を使用して mxUNKNOWN_CLASS 型のオブジェクトを生成することが可能です。たとえば、この関数は 2 つの変数を返しますが、値はその一方のみに代入されています。

    function [a,b] = foo(c)
    a = 2*c;

    mexCallMATLAB を使用して foo を呼び出した場合、割り当てられていない出力変数の型は mxUNKNOWN_CLASS になります。

例

例を開くには、次のように入力します。

edit([fullfile(matlabroot,"extern","examples","mex","filename")]);

ここで filename は、次のようになります。

例を開くには、次のように入力します。

edit([fullfile(matlabroot,"extern","examples","refbook","filename")]);

ここで filename は、次のようになります。

例を開くには、次のように入力します。

edit([fullfile(matlabroot,"extern","examples","mx","filename")]);

ここで filename は、次のようになります。

ヒント

  • MATLAB は、動的メモリを割り当てて、mexCallMATLAB の plhs に配列を格納します。MATLAB は、MEX 関数が終了されたときに動的メモリの割り当てを自動的に解除します。ただし、ヒープ領域が不足している場合は、plhs にある配列の操作の終了時に関数 mxDestroyArray を呼び出します。

バージョン履歴

R2006a より前に導入