Main Content

matlab::mex::ArgumentList

C++ MEX 関数からの入力および出力のコンテナー

説明

C++ MEX 関数は、matlab::mex::ArgumentList オブジェクトに含まれる matlab::data::Array オブジェクトとして入力および出力を渡します。MexFunction::operator() は 2 つの引数を受け入れます。1 つは入力用、1 つは出力用で、matlab::mex::ArgumentList として定義されています。

ArgumentList はラッパーであり、入力と出力のデータを保持する基となる集合での反復を可能にします。

クラスの詳細

名前空間:

matlab::mex

インクルード:

mex.hpp

メンバー関数

operator[ ]

matlab::data::Array operator[](size_t idx)

ArgumentList の要素への [] インデックスを有効にします。

パラメーター

size_t idx

入力配列の要素 (MEX 関数への入力引数) へのインデックス
戻り値

matlab::data::Array

配列 ArgumentList 内の最初の要素を指す反復子

配列、スカラーおよび文字ベクトルを入力とし、単一の出力をもつ MEX 関数を MATLAB® から呼び出します。

a = myMEXFunction(array, scalar, 'character vector')

最初の入力引数を TypedArray に、2 番目の入力をスカラー const double に (いずれも MATLAB で double 型と仮定)、3 番目の入力を matlab::data::CharArray として代入します。

void operator()(matlab::mex::ArgumentList outputs, matlab::mex::ArgumentList inputs) {
    matlab::data::TypedArray<double> inArray = inputs[0];
    const double inScalar = inputs[1][0];
    matlab::data::CharArray inChar = inputs[2];
    result = ...
    outputs[0] = result;
}

begin

iterator_type begin()

配列 ArgumentList 内の最初の要素を指す反復子を返します。

戻り値

iterator_type

配列 ArgumentList 内の最初の要素を指す反復子

入力引数からベクトルを作成します。

void operator()(matlab::mex::ArgumentList outputs, matlab::mex::ArgumentList inputs) {
    std::vector<matlab::data::TypedArray<double>> vectorDoubles(inputs.begin(), inputs.end());
    ...
}

end

iterator_type end()

配列 ArgumentList 内の最後の要素より後を指す反復子を返します。

戻り値

iterator_type

配列 ArgumentList 内の最後の要素より後を指す反復子

size

size_t size()

引数リスト内の要素数を返します。呼び出しサイトで指定されている入出力の数をチェックするために使用します。

戻り値

size_t

配列 ArgumentList のサイズ

MEX 関数が 3 つの入力引数を指定して呼び出されるかどうかを特定します。

class MexFunction : public matlab::mex::Function {
public:
    void operator()(matlab::mex::ArgumentList outputs, matlab::mex::ArgumentList inputs) {
    if (inputs.size() == 3) {
        // MEX function called with three input arguments
        ...
    }
}

empty

bool empty()

引数リストが空かどうかを示す論理値を返します。

戻り値

bool

引数リストが空 (size() == 0) の場合は論理 true を返します。

入力引数を指定せずに MEX 関数が呼び出されるかどうかを特定します。

class MexFunction : public matlab::mex::Function {
public:
    void operator()(matlab::mex::ArgumentList outputs, matlab::mex::ArgumentList inputs) {
    if (inputs.empty()) {
        // MEX function called with no input arguments
        ...
    }
}

バージョン履歴

R2018a で導入