MATLAB ソルバー

<< 目次を表示 >>

ページ位置:  シミュレーション > 数学的なシミュレーション > ソルバー >

MATLAB ソルバー

MATLABは数値計算環境およびプログラミング言語であり、JavaScriptで書かれたスクリプトから呼び出すことができる数学関数の大規模なライブラリを含んでいます。

 

ソルバークラスをJavaScriptで書かれた処理から呼び出し、実行時にMATLABから任意の数学関数を呼び出すことができます。MATLAB用ソルバークラスは、APIを介して外部のMATLABツールを呼び出し、強力な数学関数を実行中のシミュレーションに直接リンクさせることができます。例えば、以下のようになります。

 

    var matlab = new Solver("matlab");

    var resultFromMatlab = matlab.exec('complexMathsFunction', parameter1, parameter2);

 

シミュレーションでソルバーの利用」のページもご覧ください。

 

 

以下の機能が利用できます。

 

MATLABはGNU Octaveライブラリの代替として利用可能であり、GNU Octaveと同じコンテキストで使用することができます。

 

Enterprise ArchitectとMATLABとの連携のためには、バージョンR2018b以降が必要です。

 

 

準備と設定

MATLABがインストールされていれば、Enterprise Architectはレジストリからその場所を読み込んで自動的に呼び出します。

MATLABが自動的にロードできない場合は、MATLABコンソールで'matlabroot'を実行して得られた値をソルバーのパスに設定してください。

 

利用方法

作成

ソルバーのコンストラクタに'matlab'を渡すことで、MATLABに接続された新しいソルバーを作成します。以下のようになります。

    var matlab = new Solver('matlab');

値の割り当て

matlab.set関数を使用して値を代入できます。例えば、以下のようになります。

 

    matlab.set('simple_value', 3.14);

あるいは

    var myString = "this is an example string";

    matlab.set('myString', myString);

値の取得

matlab.get関数を使用して、matlabから結果を取得します。例えば、以下のようになります。

    var simple_value = matlab.get('simple_value');

    var myString = matlab.get('myString');

関数の呼び出し

Solver.execの最初の引数として関数名を渡します。

 

以下のいずれかになります。:

 

  • 単一の引数を取る関数の場合は、単に値を2番目の引数として渡します。例:

    var result = matlab.exec('ceil', 7.4);

 

  • 2つ以上の引数が必要な場合は、2番目の引数としてすべての引数をJavascriptオブジェクトとして渡します。:

    var result = matlab.exec('minus', {0: 8, 1: 4.5});

 

注意: 引数の順番は、オブジェクト名のアルファベット順で決定されます。

 

エラーを避けるためにヘルパー関数を使用することもできます。

 

//ソルバーのexecに渡す引数のオブジェクトを作成する関数の例

function args() {

var obj = {};

for (var i = 0; i < arguments.length; i++) {

 obj[i] = arguments[i];

}

return obj;

}

 

//実際の実行文

var result = matlab.exec('minus', args(8, 4.5));

トレース

トレース文はシミュレーション中の任意のタイミングで、指定された内容を出力するために利用できます。シミュレーションの実行中に追加の情報を出力することで、ログとして活用できます。

 

Trace()の実行結果は出力サブウィンドウに出力されます。

 

以下の内容は、Trace()を利用した例です。

matlab.set('simple_value', 3.14);

var pi = matlab.get('simple_value');

Trace( 'Simple Value = ' + pi );

 

 

参照: