Main Content

線形化時に摂動するブロックの摂動レベルの変更

解析ヤコビアンが事前にプログラムされていないブロックは、数値摂動法を使用して線形化されます。アプリケーションについて、状態のサイズおよび入力信号の摂動レベルを変更できます。

ブロックの摂動レベルの変更

以下の例では、magball モデルの Magnetic Ball Plant ブロックに対する摂動レベルを変更する方法を説明します。摂動レベルの変更により線形化の結果が変わります。

このモデルでは、状態値と入力信号の値は倍精度値です。このモデルの状態と入力信号の既定の摂動サイズは 10-5(1+|x|) です。ここで、x は、摂動状態または入力信号の操作点の値です。

摂動レベルを変更する前にモデルを開きます。

open_system('magball')

状態の摂動レベルを 10-7(1+|x|) に変更します。ここで、x は状態値です。

blockname = 'magball/Magnetic Ball Plant';
set_param(blockname,'StatePerturbationForJacobian','1e-7');

このブロックの入力信号の摂動レベルを 10-3(1+|x|) に変更する (ここで x は入力信号の値) には、まずブロックの端子ハンドルを取得し、そのハンドルを入力端子の値にします。

ph = get_param(blockname,'PortHandles');
p_in = ph.Inport(1);

その後、入力端子の摂動レベルを設定します。

set_param(p_in,'PerturbationForJacobian','1e-3');

ブロックの状態の現在の摂動レベルを取得するには、次のコードを使用します。

statePerturb = get_param(blockname,'StatePerturbationForJacobian');

ブロックの入力信号の現在の摂動レベルを取得するには、次のコードを使用します。

inputPerturb = get_param(p_in,'PerturbationForJacobian');

対応する状態または入力信号の摂動レベルが既定の値である場合、statePerturbinputPerturb は両方とも 'auto' です。

既定の摂動レベル

倍精度の状態と入力信号の既定の摂動サイズは 10-5(1+|x|) です。ここで、x は摂動状態または入力信号の操作点の値です。単精度の状態と入力信号では、既定の摂動サイズは 0.005(1+|x|) です。

ブロックの状態の既定の摂動レベルを復元するには、次のコードを使用します。

set_param(blockname,'StatePerturbationForJacobian','auto');

ブロックの入力信号の既定の摂動レベルを復元するには、次のコードを使用します。

set_param(p_in,'PerturbationForJacobian','auto');

整数値のブロックの摂動レベル

インデックス処理のため整数の入力端子を必要とするカスタム ブロックでは、ブロックが入力値の小規模な摂動をサポートしない場合に、線形化の問題が発生することがあります。この問題を解決するには、このようなブロックの摂動レベルをゼロに設定します (これにより、ブロックの線形化のゲインが 1 に設定されます)。

参考

関連するトピック