線形化時に摂動するブロックの摂動レベルの変更
解析ヤコビアンが事前にプログラムされていないブロックは、数値摂動法を使用して線形化されます。アプリケーションについて、状態のサイズおよび入力信号の摂動レベルを変更できます。
ブロックの摂動レベルの変更
以下の例では、magball モデルの Magnetic Ball Plant ブロックに対する摂動レベルを変更する方法を説明します。摂動レベルの変更により線形化の結果が変わります。
このモデルでは、状態値と入力信号の値は倍精度値です。このモデルの状態と入力信号の既定の摂動サイズは です。ここで、 は、摂動状態または入力信号の操作点の値です。
摂動レベルを変更する前にモデルを開きます。
open_system('magball')
状態の摂動レベルを に変更します。ここで、 は状態値です。
blockname = 'magball/Magnetic Ball Plant'; set_param(blockname,'StatePerturbationForJacobian','1e-7');
このブロックの入力信号の摂動レベルを に変更する (ここで は入力信号の値) には、まずブロックの端子ハンドルを取得し、そのハンドルを入力端子の値にします。
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');
対応する状態または入力信号の摂動レベルが既定の値である場合、statePerturb
と inputPerturb
は両方とも 'auto'
です。
既定の摂動レベル
倍精度の状態と入力信号の既定の摂動サイズは です。ここで、x は摂動状態または入力信号の操作点の値です。単精度の状態と入力信号では、既定の摂動サイズは です。
ブロックの状態の既定の摂動レベルを復元するには、次のコードを使用します。
set_param(blockname,'StatePerturbationForJacobian','auto');
ブロックの入力信号の既定の摂動レベルを復元するには、次のコードを使用します。
set_param(p_in,'PerturbationForJacobian','auto');
整数値のブロックの摂動レベル
インデックス処理のため整数の入力端子を必要とするカスタム ブロックでは、ブロックが入力値の小規模な摂動をサポートしない場合に、線形化の問題が発生することがあります。この問題を解決するには、このようなブロックの摂動レベルをゼロに設定します (これにより、ブロックの線形化のゲインが 1 に設定されます)。