Main Content

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

matlab::engine::MATLABEngine

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

説明

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

クラスの詳細

名前空間:

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

ファクトリ メソッド

matlab::engine::MATLABEngine クラスは、MATLAB を起動するためのメソッドと、共有 MATLAB セッションに同期的または非同期的に接続するためのメソッドを提供します。

サポートされない起動オプション

エンジンは次の MATLAB 起動オプションをサポートしていません。

  • -h

  • -help

  • -?

  • -n

  • -e

  • -softwareopengl

  • -logfile

MATLAB の起動オプションの詳細については、よく使われる起動オプションを参照してください。エンジン アプリケーションを開始する際に MATLAB の起動オプションを使用する方法の例は、起動オプションを使用した MATLAB の起動を参照してください。

メソッドの概要

メンバー関数

feval

引数の指定された MATLAB 関数を同期的に評価する

fevalAsync

引数の指定された MATLAB 関数を非同期的に評価する

eval

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

evalAsync

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

getVariable

MATLAB ベース ワークスペースから変数を同期的に取得する

getVariableAsync

MATLAB ベース ワークスペースから変数を非同期的に取得する

setVariable

MATLAB ベース ワークスペースに変数を同期的に配置する

setVariableAsync

MATLAB ベース ワークスペースに変数を非同期的に配置する

getProperty

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

getPropertyAsync

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

setProperty

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

setPropertyAsync

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

メンバー関数の詳細

feval

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>())
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 )
ResultType feval(const matlab::engine::String &function,
   RhsArgs&&... rhsArgs)
説明

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

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

パラメーター

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++ データ型。feval は、C++ データ型 boolint8_tint16_tint32_tint64_tuint8_tuint16_tuint32_tuint64_tfloatdouble のスカラー入力を受け入れます。

戻り値

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

MATLAB 関数から返される出力。

matlab::data::Array

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

ResultType

MATLAB 関数からユーザー指定の型として返される出力。複数の引数を返す場合は 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++ 型を指定した関数呼び出しを参照してください。

fevalAsync

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>())
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)
FutureResult<ResultType> fevalAsync(const matlab::engine::String &function,
   RhsArgs&&... rhsArgs)
説明

入力引数をもつ MATLAB 関数および返された値を非同期的に評価します。

パラメーター

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++ データ型。feval は、C++ データ型 boolint8_tint16_tint32_tint64_tuint8_tuint16_tuint32_tuint64_tfloatdouble のスカラー入力を受け入れます。

戻り値

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();
関連するトピック

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

eval

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> ())
説明

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

パラメーター

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

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> ())
説明

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

パラメーター

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::data::Array getVariable(const matlab::engine::String &varName,
    matlab::engine::WorkspaceType workspaceType = matlab::engine::WorkspaceType::BASE)
説明

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

パラメーター

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

FutureResult<matlab::data::Array> getVariableAsync(const matlab::engine::String &varName,
    matlab::engine::WorkspaceType workspaceType = matlab::engine::WorkspaceType::BASE)
説明

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

パラメーター

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

void setVariable(const matlab::engine::String &varName,
   const matlab::data::Array &var,
   matlab::engine::WorkspaceType workspaceType = matlab::engine::WorkspaceType::BASE)
説明

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

パラメーター

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

FutureResult<void> setVariableAsync(const matlab::engine::String &varName,
   const matlab::data::Array var,
   matlab::engine::WorkspaceType workspaceType = matlab::engine::WorkspaceType::BASE)
説明

MATLAB のベース ワークスペースまたはグローバル ワークスペースに非同期的に変数を入れます。同じ名前の変数が MATLAB ベース ワークスペース内に存在する場合は、setVariableAsync によって上書きされます。

パラメーター

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::getPropertyAsyncFutureResult を返し、これを使用して例外 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 で導入