メインコンテンツ

matlab::engine::MATLABEngine

R2026b

C++ プログラムから MATLAB 関数を評価

説明

matlab::engine::MATLABEngine クラスは C++ の計算エンジンとして MATLAB® プロセスを使用します。このクラスは C++ 言語と MATLAB 間のインターフェイスを提供し、これにより、MATLAB の関数と式を C++ プログラムから評価できるようになります。

クラスの詳細

名前空間:

matlab::engine
インクルード:MatlabEngine.hpp

メンバー関数

feval

入力引数をもつ MATLAB 関数を同期的に評価します。C++ から MATLAB に引数を渡す場合や、MATLAB から C++ に結果を返す場合には feval を使用します。

入力と出力は、MATLAB のデータ API で定義された型、またはネイティブの C++ 型とすることができます。

構文

関数を実行して複数の結果を返します。

std::vector<matlab::data::Array> feval(const matlab::engine::String &function,
   const size_t numReturned,
   const std::vector<matlab::data::Array> &args,
   const std::shared_ptr<matlab::engine::StreamBuffer> &output = std::shared_ptr<matlab::engine::StreamBuffer>(),
   const std::shared_ptr<matlab::engine::StreamBuffer> &error = std::shared_ptr<matlab::engine::StreamBuffer>())

複数の入力を指定して関数を実行し、単一の結果を返します。

matlab::data::Array feval(const matlab::engine::String &function,
   const std::vector<matlab::data::Array> &args,
   const std::shared_ptr<matlab::engine::StreamBuffer> &output = std::shared_ptr<matlab::engine::StreamBuffer>(),
   const std::shared_ptr<matlab::engine::StreamBuffer> &error = std::shared_ptr<matlab::engine::StreamBuffer>())

単一の入力を指定して関数を実行し、単一の結果を返します。

matlab::data::Array feval(const matlab::engine::String &function,
   const matlab::data::Array &arg,
   const std::shared_ptr<matlab::engine::StreamBuffer> &output = std::shared_ptr<matlab::engine::StreamBuffer>(),
   const std::shared_ptr<matlab::engine::StreamBuffer> &error = std::shared_ptr<matlab::engine::StreamBuffer>())

ネイティブの C++ 型を指定して関数を実行し、出力ストリームをリダイレクトします。

ResultType feval(const matlab::engine::String &function,
   const std::shared_ptr<matlab::engine::StreamBuffer> &output,
   const std::shared_ptr<matlab::engine::StreamBuffer> &error,
   RhsArgs&&... rhsArgs)

ネイティブの C++ 型を指定して関数を実行します。

ResultType feval(const matlab::engine::String &function,
   RhsArgs&&... rhsArgs)

カスタム C++ 構造体の入力を指定して関数を実行し、カスタム C++ 構造体を返します。 (R2026b 以降)

ResultType* outStructPtr = matlabPtr->feval<ResultType*>(const matlab::engine::String &function,inStructPtr)

詳細については、Pass C++ Structures to MATLAB Functionsを参照してください。

パラメーター

const matlab::engine::String &function

評価する MATLAB 関数またはスクリプトの名前。名前は std::u16string または std::string として指定します。

const size_t numReturned

返される値の数

const std::vector<matlab::data::Array> &args

std::vector で MATLAB 関数に渡される複数の入力引数。ベクトルは MATLAB で列配列に変換されます。

const matlab::data::Array arg

MATLAB 関数に渡される単一の入力引数

const std::shared_ptr<matlab::engine::StreamBuffer> &output = std::shared_ptr<matlab::engine::StreamBuffer>()

MATLAB 関数からの標準出力を格納するために使用するストリーム バッファー。例については、標準出力またはエラー時のストリーム バッファー タイプの受け渡しを参照してください。

const std::shared_ptr<matlab::engine::StreamBuffer> &error = std::shared_ptr<matlab::engine::StreamBuffer>()

MATLAB 関数からのエラー メッセージを格納するために使用するストリーム バッファー。例については、標準出力またはエラー時のストリーム バッファー タイプの受け渡しを参照してください。

RhsArgs&&... rhsArgs

ネイティブ C++ データ型:

  • std::float

  • std::double

  • std::int8_t, std::uint8_t

  • std::int16_t, std::uint16_t

  • std::int32_t, std::uint32_t

  • std::int64_t, std::uint64_t

  • std::bool

  • std::string, std::u16string (R2024a 以降)

std::vector データ型:

  • std::vector<float>

  • std::vector<double>

  • std::vector<int8_t>、std::vector<uint8_t>

  • std::vector<int16_t>, std::vector<uint16_t>

  • std::vector<int32_t>, std::vector<uint32_t>

  • std::vector<int64_t>, std::vector<uint64_t>

(R2024a 以降)

std::complex データ型:

  • std::complex<float>

  • std::complex<double>

  • std::complex<int8_t>, std::complex<uint8_t>

  • std::complex<int16_t>, std::complex<uint16_t>

  • std::complex<int32_t>, std::complex<uint32_t>

  • std::complex<int64_t>, std::complex<uint64_t>

(R2024a 以降)

matlab::data::Array データ型:

(R2026a 以降)

inStructPtr

outStructPtr

関数の入力 (inStructPtr) および出力 (outStructPtr) として使用されるカスタム C++ 構造体へのポインター。カスタム C++ 構造体を MATLAB との間で受け渡すには、IN_PROCESS モードを使用して MATLAB を起動する必要があります。詳細については、Pass C++ Structures to MATLAB Functionsを参照してください。 (R2026b 以降)

戻り値

std::vector<matlab::data::Array>

MATLAB 関数から返された複数の出力

matlab::data::Array

MATLAB 関数から返された単一の出力。

ResultType

ユーザー指定の型として MATLAB 関数から返された出力。複数の出力を返す場合、ResultType を std::tuple にすることができます。

例外

matlab::engine::MATLABNotAvailableException

MATLAB セッションを使用できません。

matlab::engine::MATLABExecutionException

関数に MATLAB ランタイム エラーが存在します。

matlab::engine::TypeConversionException

MATLAB 関数の結果を指定された型に変換できません。

matlab::engine::MATLABSyntaxException

MATLAB 関数に構文エラーが存在します。

例

この例では、数値の配列を MATLAB 関数に渡します。コードは次の手順を実行します。

  • double 型の数値ベクトルから 2 行 3 列の次元をもつ matlab::data::Array を作成します。

  • 共有 MATLAB セッションを開始します。

  • データ配列を MATLAB の sqrt 関数に渡して、結果を C++ に返します。

#include "MatlabDataArray.hpp"
#include "MatlabEngine.hpp"
using namespace matlab::engine;

    std::vector<double> cppData{ 4, 8, 12, 16, 20, 24 };

    // Create a 2-by-3 MATLAB data array 
    matlab::data::ArrayFactory factory;
    auto inputArray = factory.createArray({ 2, 3 }, cppData.cbegin(), cppData.cend());

    // Start MATLAB engine
    std::unique_ptr<MATLABEngine> matlabPtr = startMATLAB();

    // Pass data array to MATLAB sqrt function 
    // And return results.
    auto result = matlabPtr->feval(u"sqrt", inputArray);

ネイティブの C++ 型を使用して feval を呼び出す場合、入力引数はスカラー値に限定されます。たとえば、次のコードはスカラー値の平方根を返します。

#include "MatlabEngine.hpp"
using namespace matlab::engine;

    // Start MATLAB engine synchronously
    std::unique_ptr<MATLABEngine> matlabPtr = startMATLAB();
    
    // Call sqrt function
    double result = matlabPtr->feval<double>(u"sqrt", double(27));

複数の出力引数を返す関数の場合、MATLAB データ API を使用するか、または C++ 型を使用している場合は std::tuple を使用することができます。例については、ネイティブ C++ 型を指定した関数呼び出しを参照してください。

USING_TYPE_WITH_MATLAB マクロを使用して、構造体型を C++ ライブラリに対する MATLAB インターフェイスに関連付けた後に、カスタム C++ 構造体ポインターを feval に渡すことができます。たとえば、次のコードでは、2 つの Position 構造体ポインターを MATLAB 関数に渡し、出力として 1 つの Rectangle 構造体ポインターを受け取ります。

#include "MatlabEngine.hpp"
#include "shapes.hpp"

USING_TYPE_WITH_MATLAB(Shapes::Position, "ShapesLib");
USING_TYPE_WITH_MATLAB(Shapes::Rectangle, "ShapesLib");

using namespace matlab::engine;

std::unique_ptr<MATLABEngine> matlabPtr = startMATLAB(MATLABApplicationMode::IN_PROCESS);

Shapes::Position p1{0, 0}, p2{10, 5};
Shapes::Rectangle* rectPtr = matlabPtr->feval<Shapes::Rectangle*>(u"createRectangle", &p1, &p2);
    ...
delete rectPtr;
完全な例については、Pass C++ Structures to MATLAB Functionsを参照してください。 (R2026b 以降)

fevalAsync

入力引数と戻り値を指定した MATLAB 関数を、非同期的に評価します。

構文

関数を非同期的に実行し、複数の結果を返します。

FutureResult<std::vector<matlab::data::Array>> fevalAsync(const matlab::engine::String &function,
   const size_t numReturned,
   const std::vector<matlab::data::Array> &args,
   const std::shared_ptr<matlab::engine::StreamBuffer> &output = std::shared_ptr<matlab::engine::StreamBuffer>(),
   const std::shared_ptr<matlab::engine::StreamBuffer> &error = std::shared_ptr<matlab::engine::StreamBuffer>())

複数の入力を指定して関数を非同期的に実行し、単一の結果を返します。

FutureResult<matlab::data::Array> fevalAsync(const matlab::engine::String &function,
   const std::vector<matlab::data::Array> &args,
   const std::shared_ptr<matlab::engine::StreamBuffer> &output = std::shared_ptr<matlab::engine::StreamBuffer>(),
   const std::shared_ptr<matlab::engine::StreamBuffer> &error = std::shared_ptr<matlab::engine::StreamBuffer>())

単一の入力を指定して関数を非同期的に実行し、単一の結果を返します。

FutureResult<matlab::data::Array> fevalAsync(const matlab::engine::String &function,
   const matlab::data::Array &arg,
   const std::shared_ptr<matlab::engine::StreamBuffer> & output = std::shared_ptr<matlab::engine::StreamBuffer>(),
   const std::shared_ptr<matlab::engine::StreamBuffer> & error = std::shared_ptr<matlab::engine::StreamBuffer>())

ネイティブの C++ 型を指定して関数を非同期的に実行し、出力ストリームをリダイレクトします。

FutureResult<ResultType> fevalAsync(const matlab::engine::String &function,
   const std::shared_ptr<matlab::engine::StreamBuffer> &output,
   const std::shared_ptr<matlab::engine::StreamBuffer> &error,
   RhsArgs&&... rhsArgs)

ネイティブの C++ 型を指定して関数を非同期的に実行します。

FutureResult<ResultType> fevalAsync(const matlab::engine::String &function,
   RhsArgs&&... rhsArgs)

カスタム C++ 構造体の入力を指定して関数を実行し、カスタム C++ 構造体を返します。 (R2026b 以降)

FutureResult<ResultType*> future = matlabPtr->fevalAsync<ResultType*>(const matlab::engine::String &function,inStructPtr)

詳細については、Pass C++ Structures to MATLAB Functionsを参照してください。

パラメーター

const matlab::engine::String &function

評価する MATLAB 関数またはスクリプトの名前。名前は std::u16string または std::string として指定します。

const size_t numReturned

返される値の数

const std::vector<matlab::data::Array> &args

std::vector で MATLAB 関数に渡される複数の入力引数。ベクトルは MATLAB で列配列に変換されます。

const matlab::data::Array arg

MATLAB 関数に渡される単一の入力引数

const std::shared_ptr<matlab::engine::StreamBuffer> &output = std::shared_ptr<matlab::engine::StreamBuffer>()

MATLAB 関数からの標準出力を格納するために使用するストリーム バッファー。例については、標準出力またはエラー時のストリーム バッファー タイプの受け渡しを参照してください。

const std::shared_ptr<matlab::engine::StreamBuffer> &error = std::shared_ptr<matlab::engine::StreamBuffer>()

MATLAB 関数からのエラー メッセージを格納するために使用するストリーム バッファー。例については、標準出力またはエラー時のストリーム バッファー タイプの受け渡しを参照してください。

RhsArgs&&... rhsArgs

ネイティブ C++ データ型:

  • std::float

  • std::double

  • std::int8_t, std::uint8_t

  • std::int16_t, std::uint16_t

  • std::int32_t, std::uint32_t

  • std::int64_t, std::uint64_t

  • std::bool

  • std::string, std::u16string (R2024a 以降)

std::vector データ型:

  • std::vector<float>

  • std::vector<double>

  • std::vector<int8_t>、std::vector<uint8_t>

  • std::vector<int16_t>, std::vector<uint16_t>

  • std::vector<int32_t>, std::vector<uint32_t>

  • std::vector<int64_t>, std::vector<uint64_t>

(R2024a 以降)

std::complex データ型:

  • std::complex<float>

  • std::complex<double>

  • std::complex<int8_t>, std::complex<uint8_t>

  • std::complex<int16_t>, std::complex<uint16_t>

  • std::complex<int32_t>, std::complex<uint32_t>

  • std::complex<int64_t>, std::complex<uint64_t>

(R2024a 以降)

matlab::data::Array (R2024a 以降)

matlab::data::Array データ型:

(R2026a 以降)

inStructPtr

関数の入力 (inStructPtr) として使用されるカスタム C++ 構造体へのポインター。関数がカスタム C++ 構造体を返す場合、その構造体は FutureResult オブジェクトを介して返されます。カスタム C++ 構造体を MATLAB との間で受け渡すには、IN_PROCESS モードを使用して MATLAB を起動する必要があります。詳細については、Pass C++ Structures to MATLAB Functionsを参照してください。 (R2026b 以降)

戻り値

FutureResult

MATLAB 関数を呼び出した結果を取得するために使用する FutureResult オブジェクト

例外

なし

例

この例では、double 型のスカラー 12.7 を MATLAB の sqrt 関数に非同期的に渡します。次に、FutureResult オブジェクトを使用して結果を取得します。

#include "MatlabDataArray.hpp"
#include "MatlabEngine.hpp"
using namespace matlab::engine;

std::unique_ptr<MATLABEngine> matlabPtr = startMATLAB();
    matlab::data::ArrayFactory factory;
    matlab::data::Array argument = factory.createScalar<double>(12.7);
    FutureResult<matlab::data::Array> future = matlabPtr->fevalAsync(u"sqrt", std::move(argument));
       ...
    matlab::data::TypedArray<double> result = future.get();

USING_TYPE_WITH_MATLAB マクロを使用して、構造体型を C++ ライブラリに対する MATLAB インターフェイスに関連付けた後に、カスタム C++ 構造体ポインターを fevalAsync に渡すことができます。たとえば、次のコードでは、2 つの Position 構造体ポインターを MATLAB 関数に非同期的に渡し、出力として 1 つの Rectangle 構造体ポインターを受け取ります。

#include "MatlabEngine.hpp"
#include "shapes.hpp"

USING_TYPE_WITH_MATLAB(Shapes::Position, "ShapesLib");
USING_TYPE_WITH_MATLAB(Shapes::Rectangle, "ShapesLib");

using namespace matlab::engine;

std::unique_ptr<MATLABEngine> matlabPtr = startMATLAB(MATLABApplicationMode::IN_PROCESS);

Shapes::Position p1{0, 0}, p2{10, 5};
FutureResult<Shapes::Rectangle*> future = matlabPtr->fevalAsync<Shapes::Rectangle*>(u"createRectangle", &p1, &p2);
    ...
Shapes::Rectangle* rectPtr = future.get();
    ...
delete rectPtr;
完全な例については、Pass C++ Structures to MATLAB Functionsを参照してください。 (R2026b 以降)

関連するトピック

非同期での関数の呼び出し

eval

MATLAB ステートメントを文字列として同期的に評価します。

構文
void eval(const matlab::engine::String &statement,
   const std::shared_ptr<matlab::engine::StreamBuffer> &output = std::shared_ptr<matlab::engine::StreamBuffer> (),
   const std::shared_ptr<matlab::engine::StreamBuffer> &error = std::shared_ptr<matlab::engine::StreamBuffer> ())
パラメーター

const matlab::engine::String &statement

評価する MATLAB ステートメント

const std::shared_ptr<matlab::engine::StreamBuffer> &output

MATLAB ステートメントからの標準出力を格納するために使用するストリーム バッファー。例については、画面出力のリダイレクトを参照してください。

const std::shared_ptr<matlab::engine::StreamBuffer> &error

MATLAB コマンドからのエラー メッセージを格納するために使用するストリーム バッファー。例については、エラー出力のリダイレクトを参照してください。

例外

matlab::engine::MATLABNotAvailableException

MATLAB セッションを使用できません。

matlab::engine::MATLABExecutionException

MATLAB ステートメントにランタイム エラーがあります。

matlab::engine::MATLABSyntaxException

MATLAB ステートメントに構文エラーがあります。

例

この例では、次の MATLAB ステートメントを評価します。

a = sqrt(12.7);

ステートメントは変数 a を MATLAB ベース ワークスペースに作成します。

#include "MatlabEngine.hpp"
using namespace matlab::engine;

std::unique_ptr<MATLABEngine> matlabPtr = startMATLAB();
matlabPtr->eval(u"a = sqrt(12.7);");

evalAsync

MATLAB ステートメントを文字列として非同期的に評価します。

構文
FutureResult<void> evalAsync(const matlab::engine::String &str,
   const std::shared_ptr<matlab::engine::StreamBuffer> &output = std::shared_ptr<matlab::engine::StreamBuffer> (),
   const std::shared_ptr<matlab::engine::StreamBuffer> &error = std::shared_ptr<matlab::engine::StreamBuffer> ())
パラメーター

const matlab::engine::String& str

評価する MATLAB ステートメント

const std::shared_ptr<matlab::engine::StreamBuffer> & output

MATLAB ステートメントからの標準出力を格納するために使用するストリーム バッファー。例については、画面出力のリダイレクトを参照してください。

const std::shared_ptr<matlab::engine::StreamBuffer> & error

MATLAB コマンドからのエラー メッセージを格納するために使用するストリーム バッファー。例については、エラー出力のリダイレクトを参照してください。

戻り値

FutureResult

MATLAB ステートメントの完了を待機するために使用する FutureResult オブジェクト。

例外

なし

例

この例では、次の MATLAB ステートメントを非同期的に評価します。

a = sqrt(12.7);

ステートメントは変数 a を MATLAB ベース ワークスペースに作成します。

#include "MatlabEngine.hpp"
using namespace matlab::engine;

std::unique_ptr<MATLABEngine> matlabPtr = startMATLAB();
FutureResult<void> future = matlabPtr->evalAsync(u"a = sqrt(12.7);");

getVariable

MATLAB のベース ワークスペースまたはグローバル ワークスペースから変数を取得します。

構文
matlab::data::Array getVariable(const matlab::engine::String &varName,
    matlab::engine::WorkspaceType workspaceType = matlab::engine::WorkspaceType::BASE)
パラメーター

const matlab::engine::String& varName

MATLAB ワークスペース内の変数の名前。名前は std::u16string として指定します。また、このパラメーターは std::string として指定することもできます。

matlab::engine::WorkspaceType workspaceType = matlab::engine::WorkspaceType::BASE

変数の取得先の MATLAB ワークスペース (BASE または GLOBAL)。詳細については、global を参照してください。

戻り値

matlab::data::Array

MATLAB のベース ワークスペースまたはグローバル ワークスペースから取得した変数

例外

matlab::engine::MATLABNotAvailableException

MATLAB セッションを使用できません。

matlab::engine::MATLABExecutionException

要求された変数は指定された MATLAB のベース ワークスペースまたはグローバル ワークスペース内にありません。

例

この例では、varName という名前の変数を MATLAB ベース ワークスペースから取得します。

#include "MatlabEngine.hpp"
using namespace matlab::engine;

std::unique_ptr<MATLABEngine> matlabPtr = startMATLAB();
matlab::data::Array varName = matlabPtr->getVariable(u"varName");

getVariableAsync

MATLAB のベース ワークスペースまたはグローバル ワークスペースから変数を非同期的に取得します。

構文
FutureResult<matlab::data::Array> getVariableAsync(const matlab::engine::String &varName,
    matlab::engine::WorkspaceType workspaceType = matlab::engine::WorkspaceType::BASE)
パラメーター

const matlab::engine::String& varName

MATLAB ワークスペース内の変数の名前。名前は std::u16string として指定します。また、このパラメーターは std::string として指定することもできます。

matlab::engine::WorkspaceType workspaceType = matlab::engine::WorkspaceType::BASE

変数の取得先の MATLAB ワークスペース (BASE または GLOBAL)。詳細については、global を参照してください。

戻り値

FutureResult

MATLAB ワークスペースから matlab.data.Array として得られた変数を取得するために使用できる FutureResult オブジェクト。

例外

なし

例

この例では、varName という名前の変数を MATLAB ベース ワークスペースから非同期的に取得します。

#include "MatlabEngine.hpp"
using namespace matlab::engine;

std::unique_ptr<MATLABEngine> matlabPtr = startMATLAB();
FutureResult<matlab::data::Array> future = matlabPtr->getVariableAsync(u"varName");
...
matlab::data::Array varName = future.get();

setVariable

MATLAB のベース ワークスペースまたはグローバル ワークスペースに変数を入れます。

同じ名前の変数が MATLAB ワークスペース内に存在する場合は、setVariable によって上書きされます。

構文
void setVariable(const matlab::engine::String &varName,
   const matlab::data::Array &var,
   matlab::engine::WorkspaceType workspaceType = matlab::engine::WorkspaceType::BASE)
パラメーター

const matlab::engine::String& varName

MATLAB ワークスペースで作成する変数の名前。名前は std::u16string として指定します。また、このパラメーターは std::string として指定することもできます。

const matlab::data::Array var

MATLAB ワークスペースで作成する変数の値

matlab::engine::WorkspaceType workspaceType = matlab::engine::WorkspaceType::BASE

MATLAB の BASE ワークスペースまたは GLOBAL ワークスペースに変数を入れます。詳細については、global を参照してください。

例外

matlab::engine::MATLABNotAvailableException

MATLAB セッションを使用できません。

例

この例では、data という名前の変数を MATLAB ベース ワークスペースに入れます。

#include "MatlabEngine.hpp"
using namespace matlab::engine;

std::unique_ptr<MATLABEngine> matlabPtr = startMATLAB();
matlab::data::Array data = factory.createArray<double>({ 1, 3 }, { 4, 8, 6 });
matlabPtr->setVariable(u"data", data);

setVariableAsync

MATLAB のベース ワークスペースまたはグローバル ワークスペースに非同期的に変数を入れます。

同じ名前の変数が MATLAB ベース ワークスペース内に存在する場合は、setVariableAsync によって上書きされます。

構文
FutureResult<void> setVariableAsync(const matlab::engine::String &varName,
   const matlab::data::Array var,
   matlab::engine::WorkspaceType workspaceType = matlab::engine::WorkspaceType::BASE)
パラメーター

const matlab::engine::String& varName

MATLAB ワークスペースで作成する変数の名前。名前は std::u16string として指定します。また、このパラメーターは std::string として指定することもできます。

const matlab::data::Array var

MATLAB ワークスペースで作成する変数の値

matlab::engine::WorkspaceType workspaceType = matlab::engine::WorkspaceType::BASE

MATLAB の BASE ワークスペースまたは GLOBAL ワークスペースに変数を入れます。詳細については、global を参照してください。

例外

なし

例

この例では、data という名前の変数を MATLAB ベース ワークスペースに入れます。

#include "MatlabEngine.hpp"
using namespace matlab::engine;

std::unique_ptr<MATLABEngine> matlabPtr = startMATLAB();
matlab::data::Array data = factory.createArray<double>({ 1, 3 }, { 4., 8., 6. });
FutureResult<void> future = matlabPtr->setVariableAsync(u"data", data);

getProperty

オブジェクト プロパティの値を取得します。

オブジェクトの入力引数がオブジェクトの配列である場合は、プロパティ値を取得するオブジェクトに対応する配列要素のインデックスを指定します。

構文

オブジェクト配列の要素からプロパティ値を取得します。

matlab::data::Array getProperty(const matlab::data::Array &objectArray,
    size_t index,
    const matlab::engine::String &propertyName)

スカラー オブジェクトからプロパティ値を取得します。

matlab::data::Array getProperty(const matlab::data::Array &object,
   const matlab::engine::String &propertyName)
パラメーター

const matlab::data::Array &objectArray

MATLAB オブジェクトの配列

const matlab::data::Array &object

スカラー MATLAB オブジェクト

size_t index

オブジェクト配列への 0 ベースのインデックス。その配列内のどのオブジェクトのプロパティ値を返すかを指定します。

const String &propertyName

プロパティの名前です。名前は std::u16string として指定します。また、このパラメーターは std::string として指定することもできます。

戻り値

matlab::data::Array

指定した名前のプロパティの値

例外

matlab::engine::MATLABNotAvailableException

MATLAB セッションを使用できません。

matlab::engine::MATLABExecutionException

プロパティが存在しません。

例

この例では、try/catch ブロック内の MATLAB ステートメントを MATLABEngine::eval を使用して評価します。MATLABEngine::getVariable メンバー関数は例外オブジェクトを返します。MATLABEngine::getProperty は、例外 message プロパティの値を matlab::data::CharArray として返します。

#include "MatlabEngine.hpp"
using namespace matlab::engine;

std::unique_ptr<MATLABEngine> matlabPtr = startMATLAB();
matlabPtr->eval(u"try; surf(4); catch me; end");
matlab::data::Array mException = matlabPtr->getVariable(u"me");
matlab::data::CharArray message = matlabPtr->getProperty(mException, u"message");
std::cout << "messages is: " << message.toAscii() << std::endl;

getPropertyAsync

オブジェクト プロパティの値を非同期的に取得します。

オブジェクトの入力引数がオブジェクトの配列である場合は、プロパティ値を取得するオブジェクトに対応する配列要素のインデックスを指定します。

構文

オブジェクト配列の要素からプロパティ値を非同期的に取得します。

FutureResult<matlab::data::Array> getPropertyAsync(const matlab::data::Array &objectArray,
    size_t index,
    const matlab::engine::String &propertyName)

スカラー オブジェクトからプロパティ値を非同期的に取得します。

FutureResult<matlab::data::Array> getPropertyAsync(const matlab::data::Array &object,
   const matlab::engine::String &propertyName)
パラメーター

const matlab::data::Array &objectArray

MATLAB オブジェクトの配列

const matlab::data::Array &object

スカラー MATLAB オブジェクト

size_t index

オブジェクト配列への 0 ベースのインデックス。その配列内のどのオブジェクトのプロパティ値を返すかを指定します。

const matlab::engine::String &propertyName

プロパティの名前です。名前は std::u16string として指定します。また、このパラメーターは std::string として指定することもできます。

戻り値

FutureResult

演算を同期させるために使用する FutureResult オブジェクト。

例外

なし

例

この例では、try/catch ブロック内の MATLAB ステートメントを MATLABEngine::eval を使用して評価します。MATLABEngine::getVariable メンバー関数は例外オブジェクトを返します。MATLABEngine::getPropertyAsync は FutureResult を返し、これを使用して例外 message のプロパティ値を matlab::data::CharArray として取得します。

#include "MatlabEngine.hpp"
using namespace matlab::engine;

std::unique_ptr<MATLABEngine> matlabPtr = startMATLAB();
matlabPtr->eval(u"try;surf(4);catch me;end");
matlab::data::Array mException = matlabPtr->getVariable(u"me");
FutureResult<matlab::data::Array> future = matlabPtr->getPropertyAsync(mException, u"message");
matlab::data::CharArray message = future.get();
std::cout << "messages is: " << message.toAscii() << std::endl;

setProperty

オブジェクト プロパティの値を設定します。

オブジェクトの入力引数がオブジェクトの配列である場合は、プロパティ値を設定するオブジェクトに対応する配列要素のインデックスを指定します。

構文

オブジェクト配列の要素に対してプロパティ値を設定します。

void setProperty(matlab::data::Array &objectArray,
    size_t index,
    const matlab::engine::String &propertyName,
    const matlab::data::Array &propertyValue)

スカラー オブジェクトに対してプロパティ値を設定します。

void setProperty(matlab::data::Array &object,
    const matlab::engine::String &propertyName,
    const matlab::data::Array &propertyValue)
パラメーター

matlab::data::Array &objectArray

MATLAB オブジェクトの配列

matlab::data::Array &object

スカラー MATLAB オブジェクト

size_t index

オブジェクト配列への 0 ベースのインデックス。その配列内のどのオブジェクトのプロパティ値を設定するかを指定します。

const matlab::engine::String &propertyName

設定するプロパティの名前。名前は std::u16string として指定します。また、このパラメーターは std::string として指定することもできます。

const matlab::data::Array &propertyValue

プロパティに代入された値

例外

matlab::engine::MATLABNotAvailableException

MATLAB セッションを使用できません。

matlab::engine::MATLABExecutionException

プロパティが存在しません。

例

この例では、MATLAB オブジェクトのプロパティを設定する方法を説明します。MATLAB グラフを作成して line ハンドル オブジェクトを返します。ラインの LineStyle プロパティの値を文字 : に設定すると、MATLAB の line オブジェクトのプロパティ値が変更され、グラフのライン スタイルが更新されます。

#include "MatlabEngine.hpp"
using namespace matlab::engine;

std::unique_ptr<MATLABEngine> matlabPtr = startMATLAB();
matlab::data::ArrayFactory factory;
matlab::data::Array yData = factory.createArray<double>({ 1, 5 }, { 4.0, 11.0, 4.7, 36.2, 72.3 });
matlab::data::Array lineHandle = matlabPtr->feval(u"plot", yData);
matlab::data::CharArray lineStyle = factory.createCharArray(":");
matlabPtr->setProperty(lineHandle, u"LineStyle", lineStyle);

setPropertyAsync

オブジェクト プロパティの値を非同期的に設定します。

オブジェクトの入力引数がオブジェクトの配列である場合は、プロパティ値を設定するオブジェクトに対応する配列要素のインデックスを指定します。

構文

オブジェクト配列の要素に対してプロパティ値を非同期的に設定します。

FutureResult<void> setPropertyAsync(matlab::data::Array &objectArray,
    size_t index,
    const matlab::engine::String &propertyName,
    const matlab::data::Array &propertyValue)

スカラー オブジェクトに対してプロパティ値を非同期的に設定します。

FutureResult<void> setPropertyAsync(matlab::data::Array &object,
 const matlab::engine::String &propertyName,
 const matlab::data::Array &propertyValue)
パラメーター

matlab::data::Array &objectArray

MATLAB オブジェクトの配列

matlab::data::Array &object

スカラー MATLAB オブジェクト

size_t index

オブジェクト配列への 0 ベースのインデックス。その配列内のどのオブジェクトのプロパティ値を設定するかを指定します。

const matlab::engine::String &propertyName

設定するプロパティの名前。名前は std::u16string として指定します。また、このパラメーターは std::string として指定することもできます。

const matlab::data::Array &propertyValue

プロパティに割り当てられた値。

例外

なし

例

この例では、MATLAB オブジェクトのプロパティを非同期的に設定する方法を説明します。MATLAB グラフを作成して line ハンドル オブジェクトを返します。ラインの LineStyle プロパティを文字 : に設定すると、MATLAB の line オブジェクトのプロパティ値が変更され、グラフのライン スタイルが更新されます。

#include "MatlabEngine.hpp"
using namespace matlab::engine;

std::unique_ptr<MATLABEngine> matlabPtr = startMATLAB();
matlab::data::ArrayFactory factory;
matlab::data::Array yData = factory.createArray<double>({ 1, 5 }, { 4.0, 11.0, 4.7, 36.2, 72.3 });
matlab::data::Array lineHandle = matlabPtr->feval(u"plot", yData);
matlab::data::CharArray lineStyle = factory.createCharArray(":");    
FutureResult<void> future = matlabPtr->setPropertyAsync(lineHandle, u"LineStyle", lineStyle);

バージョン履歴

R2017b で導入

すべて展開する