このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。
getCompSensitivity
slLinearizer
または slTuner
インターフェイスを使用する、指定された点での相補感度関数
構文
説明
は、linsys
= getCompSensitivity(s
,pt
,temp_opening
)temp_opening
で指定された点にある追加の一時的な開始点を考慮に入れます。開始点を使用して、たとえば、外側のループが開いた状態で内側のループの相補感度関数を計算します。
例
解析ポイントでの相補感度関数の取得
ex_scd_simple_fdbk
モデルのプラント出力で計算された相補感度関数を取得します。
ex_scd_simple_fdbk
モデルを開きます。
mdl = 'ex_scd_simple_fdbk';
open_system(mdl);
このモデルには次の項目が含まれています。
モデルの slLinearizer
インターフェイスを作成します。
sllin = slLinearizer(mdl);
プラント出力での相補感度関数を計算するには、y
信号を解析ポイントとして使用します。この点を sllin
に追加します。
addPoint(sllin,'y');
y
での相補感度関数を取得します。
sys = getCompSensitivity(sllin,'y');
tf(sys)
ans = From input "y" to output "y": -3 ----- s + 8 Continuous-time transfer function.
ソフトウェアは y
に線形化出力を追加し、その後に線形化入力 dy
を加えます。
sys
は dy
から y
への伝達関数であり、 と等価です。
相補感度関数の計算用の一時的なループ開始点の指定
scdcascade
モデルでは、y2
における内側のループの相補感度関数を取得します。
scdcascade
モデルを開きます。
mdl = 'scdcascade';
open_system(mdl)
モデルの slLinearizer
インターフェイスを作成します。
sllin = slLinearizer(mdl);
y2
における内側のループの相補感度伝達関数を計算するには、y2
信号を解析ポイントとして使用します。外側のループの影響を取り除くには、y1m
で外側のループを中断します。これら両方の点を sllin
に追加します。
addPoint(sllin,{'y2','y1m'});
y2
における内側のループの相補感度関数を取得します。
sys = getCompSensitivity(sllin,'y2','y1m');
ここで、3 番目の入力引数 'y1m'
は、外側のループの一時的な開始点を指定します。
特定のパラメーター組み合わせでの相補感度関数の取得
複数の伝達関数に対して scdcascade
モデルをバッチ線形化するとします。ほとんどの線形化では、C2
コントローラーの比例ゲイン (Kp2
) と積分ゲイン (Ki2
) を 10% の範囲で変化させます。この例では、Kp2
および Ki2
の最大値で内側のループの相補感度関数を計算します。
scdcascade
モデルを開きます。
mdl = 'scdcascade';
open_system(mdl);
モデルの slLinearizer
インターフェイスを作成します。
sllin = slLinearizer(mdl);
C2
コントローラーの比例ゲイン (Kp2
) および積分ゲイン (Ki2
) を 10% の範囲で変化させます。
Kp2_range = linspace(0.9*Kp2,1.1*Kp2,3); Ki2_range = linspace(0.9*Ki2,1.1*Ki2,5); [Kp2_grid,Ki2_grid]=ndgrid(Kp2_range,Ki2_range); params(1).Name = 'Kp2'; params(1).Value = Kp2_grid; params(2).Name = 'Ki2'; params(2).Value = Ki2_grid; sllin.Parameters = params;
内側のループの相補感度を計算するには、y2
信号を解析ポイントとして使用します。外側のループの影響を取り除くには、y1m
で外側のループを中断します。これら両方の点を sllin
に追加します。
addPoint(sllin,{'y2','y1m'})
Ki2
および Kp2
の最大値のインデックスを決定します。
mdl_index = params(1).Value == max(Kp2_range) & params(2).Value == max(Ki2_range);
y2
で相補感度伝達関数を取得します。
sys = getCompSensitivity(sllin,'y2','y1m',mdl_index);
相補感度関数からのオフセットの取得
Simulink モデルを開きます。
mdl = 'watertank';
open_system(mdl)
線形化オプション セットを作成し、StoreOffsets
オプションを設定します。
opt = linearizeOptions('StoreOffsets',true);
slLinearizer
インターフェイスを作成します。
sllin = slLinearizer(mdl,opt);
タンクの出力端子で解析ポイントを追加します。
addPoint(sllin,'watertank/Water-Tank System');
y
で相補感度関数を計算し、対応する線形化オフセットを取得します。
[sys,info] = getCompSensitivity(sllin,'watertank/Water-Tank System');
オフセットを表示します。
info.Offsets
ans = struct with fields: x: [2x1 double] dx: [2x1 double] u: 1 y: 1 StateName: {2x1 cell} InputName: {'watertank/Water-Tank System'} OutputName: {'watertank/Water-Tank System'} Ts: 0
入力引数
s
— Simulink® モデルへのインターフェイス
slLinearizer
インターフェイス | slTuner
インターフェイス
Simulink モデルへのインターフェイス。slLinearizer
インターフェイスまたは slTuner
インターフェイスとして指定します。
pt
— 解析ポイント信号名
文字ベクトル | string | 文字ベクトルの cell 配列 | string 配列
解析ポイント信号名。以下で指定します。
文字ベクトルまたは string — 解析ポイント信号名。
解析ポイントに関連付けられた信号名を確認するには、
s
と入力します。MATLAB® コマンド ウィンドウにs
の内容が表示されます。これには、解析ポイント信号名、ブロック名および端子番号が含まれます。解析ポイントに信号名がなく、ブロック名と端子番号のみがあるとします。ブロック名としてpt
を指定できます。s
の解析ポイントのリストにないポイントを使用するには、最初にaddPoint
を使用してポイントを追加します。完全な信号名またはブロック名の一意的に一致する部分として
pt
を指定できます。解析ポイントの完全な信号名が'LoadTorque'
であるとします。'Torque'
がs
の他の解析ポイントの信号名の一部でない限り、pt
を'Torque'
と指定できます。たとえば、
pt = 'y1m'
とします。文字ベクトルの cell 配列または string 配列 — 複数の解析ポイント名を指定します。たとえば、
pt = {'y1m','y2m'}
とします。
linsys
を計算するために、ソフトウェアは pt
で線形化出力を追加し、その後に線形化入力を追加します。
以下のモデルを考えます。
'y'
として pt
を指定します。
ソフトウェアは、dy
から y
への伝達関数として linsys
を計算します。
pt
を複数の信号として指定する場合 (たとえば、pt = {'u','y'}
)、ソフトウェアは各点で、線形化出力を追加し、その後に線形化入力を追加します。
du
と dy
は線形化入力で、u
と y
は線形化出力です。ソフトウェアは、各線形化入力から各線形化出力への伝達関数をもつ MIMO 伝達関数として linsys
を計算します。
temp_opening
— 一時的開始点信号名
文字ベクトル | string | 文字ベクトルの cell 配列 | string 配列
一時的開始点信号名。以下で指定します。
文字ベクトルまたは string — 解析ポイント信号名。
temp_opening
では、s
の解析ポイントのリストに存在する解析ポイントを指定しなければなりません。解析ポイントに関連付けられた信号名を確認するには、s
と入力します。MATLAB コマンド ウィンドウにs
の内容が表示されます。これには、解析ポイント信号名、ブロック名および端子番号が含まれます。解析ポイントに信号名がなく、ブロック名と端子番号のみがあるとします。ブロック名としてtemp_opening
を指定できます。s
の解析ポイントのリストにないポイントを使用するには、最初にaddPoint
を使用してポイントを追加します。完全な信号名またはブロック名の一意的に一致する部分として
temp_opening
を指定できます。解析ポイントの完全な信号名が'LoadTorque'
であるとします。'Torque'
がs
の他の解析ポイントの信号名の一部でない限り、temp_opening
を'Torque'
と指定できます。たとえば、
temp_opening = 'y1m'
とします。文字ベクトルの cell 配列または string 配列 — 複数の解析ポイント名を指定します。たとえば、
temp_opening = {'y1m','y2m'}
とします。
mdl_index
— 対象の線形化のインデックス
論理値の配列 | 正の整数のベクトル
対象の線形化のインデックス。以下で指定します。
論理値の配列 — 対象の線形化の論理配列のインデックス。2 つのパラメーター
par1
とpar2
を変化させ、par1 > 0.5
とpar2 <= 5
の組み合わせで線形化を抽出するとします。使用:params = s.Parameters; mdl_index = params(1).Value>0.5 & params(2).Value <= 5;
式
params(1).Value>0.5 & params(2).Value<5
は論理インデックス付けを使用して、logical 配列を返します。この logical 配列は、params(1).Value
およびparams(2).Value
と同じサイズです。各エントリには、params(1).Value
およびparams(2).Value
内の対応するエントリの式の論理評価が含まれます。正の整数のベクトル — 対象の線形化の線形インデックス。2 つのパラメーター
par1
とpar2
を変化させ、par1 > 0.5
とpar2 <= 5
の組み合わせで線形化を抽出するとします。使用:params = s.Parameters; mdl_index = find(params(1).Value>0.5 & params(2).Value <= 5);
式
params(1).Value>0.5 & params(2).Value<5
は logical 配列を返します。find
はその logical 配列の true の各エントリの線形インデックスを返します。
出力引数
linsys
— 相補感度関数
状態空間モデル
相補感度関数。以下の説明のように返されます。
s.Parameters
およびs.OperatingPoints
を設定していない場合、ソフトウェアは既定のモデル パラメーター値を使用してlinsys
を計算します。ソフトウェアはモデルの初期条件を線形化の操作点として使用します。linsys
は状態空間モデルとして返されます。s.Parameters
のみを設定している場合、ソフトウェアはそれぞれのパラメーター グリッド点の線形化を計算します。linsys
は、パラメーター グリッドと同じサイズの状態空間モデル配列として返されます。s.OperatingPoints
のみを設定している場合、ソフトウェアは指定されたそれぞれの操作点の線形化を計算します。linsys
は、s.OperatingPoints
と同じサイズの状態空間モデル配列として返されます。s.Parameters
を設定しており、s.OperatingPoints
を単一の操作点として指定している場合、ソフトウェアはそれぞれのパラメーター グリッド点の線形化を計算します。ソフトウェアは、指定された操作点を線形化の操作点として使用します。linsys
は、パラメーター グリッドと同じサイズの状態空間モデル配列として返されます。s.Parameters
を設定しており、s.OperatingPoints
を複数の操作点オブジェクトとして指定している場合、ソフトウェアはそれぞれのパラメーター グリッド点の線形化を計算します。s.OperatingPoints
はs.Parameters
で指定されたパラメーター グリッドと同じサイズでなければなりません。ソフトウェアは、対応する操作点およびパラメーター グリッド点を使用してそれぞれの線形化を計算します。linsys
はパラメーター グリッドと同じサイズの状態空間モデル配列として返されます。s.Parameters
を設定しており、s.OperatingPoints
を複数のシミュレーション スナップショット時間として指定している場合、ソフトウェアはスナップショット時間とパラメーター グリッド点のそれぞれの組み合わせに対してモデルをシミュレートして線形化します。サイズp
のパラメーター グリッドとN
個のスナップショット時間を指定するとします。linsys
は、サイズがN
行p
列の状態空間モデル配列として返されます。
ほとんどのモデルでは、linsys
は ss
オブジェクトまたは ss
オブジェクトの配列として返されます。ただし、モデルの pt
で定義された線形化パスに次のいずれかのブロックが含まれている場合、linsys
は指定されたタイプの状態空間モデルを返します。
ブロック | linsys のタイプ |
---|---|
genss オブジェクトまたは調整可能なモデル オブジェクトとして指定された置換をもつブロック | genss |
uss などの不確かさをもつモデルとして指定された置換をもつブロック | uss (Robust Control Toolbox) |
Sparse Second Order ブロック | mechss |
スパース モデルに線形化するように構成された Descriptor State-Space ブロック | sparss |
info
— 線形化の情報
構造体
線形化の情報。次のフィールドを含む構造体として返されます。
Offsets
— 線形化のオフセット
[]
(既定値) | 構造体 | 構造体配列
線形化のオフセット。s.Options.StoreOffsets
が false
の場合は []
として返されます。それ以外の場合、Offsets
は次のいずれかとして返されます。
linsys
が単一の状態空間モデルの場合、Offsets
は構造体になります。linsys
が状態空間モデルの配列の場合、Offsets
はlinsys
と同じ次元をもつ構造体配列になります。
オフセットの各構造体には次のフィールドがあります。
フィールド | 説明 |
---|---|
x | 線形化に使用された状態のオフセット。長さ nx の列ベクトルとして返されます。nx は linsys にある状態の数です。 |
y | 線形化に使用された出力のオフセット。長さ ny の列ベクトルとして返されます。ny は linsys にある出力の数です。 |
u | 線形化に使用された入力のオフセット。長さ nu の列ベクトルとして返されます。nu は linsys にある入力の数です。 |
dx | 連続時間システムの微分オフセット、または離散時間システムの更新された状態値。長さ nx の列ベクトルとして返されます。 |
StateName | 状態名。linsys.StateName の名前に一致する nx 個の要素をもつ cell 配列として返されます。 |
InputName | 入力名。linsys.InputName の名前に一致する nu 個の要素をもつ cell 配列として返されます。 |
OutputName | 出力名。linsys.OutputName の名前に一致する ny 個の要素をもつ cell 配列として返されます。 |
Ts | 線形化されたシステムのサンプル時間。linsys.Ts のサンプル時間に一致するスカラーとして返されます。連続時間システムの場合、Ts は 0 です。 |
Offsets
が構造体配列の場合、オフセットを使用して LPV System ブロックを構成できます。これを行うには、まず getOffsetsForLPV
を使用してオフセットを必要な形式に変換します。例については、LTI システムの配列を使用した非線形動作の近似を参照してください。
Advisor
— 線形化の診断情報
[]
(既定値) | LinearizationAdvisor
オブジェクト | LinearizationAdvisor
オブジェクトの配列
線形化の診断情報。s.Options.StoreAdvisor
が false
の場合は []
として返されます。それ以外の場合、Advisor
は次のいずれかとして返されます。
linsys
が単一の状態空間モデルの場合、Advisor
はLinearizationAdvisor
オブジェクトになります。linsys
が状態空間モデルの配列の場合、Advisor
はlinsys
と同じ次元をもつLinearizationAdvisor
オブジェクトの配列になります。
LinearizationAdvisor
オブジェクトは個々の線形化ブロックについての線形化の診断情報を格納します。LinearizationAdvisor
オブジェクトを使用して線形化の結果をトラブルシューティングする例は、コマンド ラインを使用した線形化の結果のトラブルシューティングを参照してください。
詳細
相補感度関数
ある点での "相補感度関数" とは、その点での加法的な外乱から同じ点での測定への伝達関数のことです。感度関数とは対照的に、測定の "後に" 外乱が追加されます。
解析ポイント x
での相補感度関数を計算するために、ソフトウェアは x
で線形化出力を追加し、その後に線形化入力 dx
を追加します。相補感度関数は、dx
から x
への伝達関数です。
Simulink モデルでの解析ポイント | getCompSensitivity による解析ポイントの解釈 | 相補感度関数 |
---|---|---|
|
|
|
たとえば、y
での相補感度関数を計算する次のモデルについて考えます。
ここで、ソフトウェアは y
で線形化出力を追加し、その後に線形化入力 dy
を追加します。y
での相補感度関数 T は、dy
から y
への伝達関数です。T は、以下のように計算されます。
ここで、I は GK と同じサイズの単位行列です。y
での相補感度達関数は、r
から y
への閉ループ伝達関数に -1
を掛け合わせたものと同じです。
一般的には、基準信号からプラント出力まで計算される相補感度関数 T は、I–S と同じです。ここで、S はこの点での感度関数で、I は同じサイズの単位行列です。ただし、getCompSensitivity
は、線形化の出力と入力を "同じ点" で追加するため、getCompSensitivity
が返す T は、S–I と等しくなります。
ソフトウェアは、相補感度関数を計算する際に Simulink モデルを変更しません。
解析ポイント
"解析ポイント" は、slLinearizer
と slTuner
インターフェイスで使用され、モデル内で線形解析と制御システムの調整に関連する箇所を示します。解析ポイントは、getIOTransfer
、getLoopTransfer
、getSensitivity
、getCompSensitivity
などの線形化コマンドの入力として使用します。線形化コマンドの入力として、解析ポイントによりモデル内の開ループまたは閉ループの伝達関数を指定できます。また、systune
などのコマンドを使って制御システムを調整する際に、解析ポイントを使用して設計要件を指定することもできます。
"場所" とは、モデル内の特定のブロック出力端子か、そのような出力端子にあるバス要素を指します。便宜上、この端子から発信する信号の名前を使って解析ポイントを示すことができます。
解析ポイントは、slLinearizer
または slTuner
インターフェイス s
に対して、インターフェイスの作成時に追加できます。以下に例を示します。
s = slLinearizer('scdcascade',{'u1','y1'});
また、addPoint
コマンドを使用することもできます。
s
のすべての解析ポイントを表示するには、コマンド プロンプトで s
と入力してインターフェイスの内容を表示します。s
の各解析ポイントの表示には、ブロック名、端子番号、およびこの解析ポイントから発信される信号の名前が含まれます。getPoints
を使用して、すべての解析ポイントのリストをプログラムで取得することもできます。
解析ポイントの使用方法の詳細については、制御システムの解析と設計における対象信号のマークおよびバッチ線形化用に対象の信号をマークするを参照してください。
永続的なループ開始点
"永続的な開始点" とは、slLinearizer
および slTuner
インターフェイスで使用され、ソフトウェアがモデル内で信号の流れを中断する箇所を示します。線形化および調整時に、これらの開始点が強制的に適用されます。永続的な開始点は、ある特定のモデル コンポーネントを分離するために使用します。航空機のダイナミクスを取得する大規模なモデルがあり、機体にのみ線形解析を実行するとします。永続的な開始点を使用すれば、このモデルの他のコンポーネントをすべて除外できます。モデル内にカスケード式ループがあり、特定のループを解析する場合などにも使用できます。
"場所" とは、モデル内の特定のブロック出力端子を指します。便宜上、この端子から発信する信号の名前を使って開始点を示すことができます。
永続的な開始点は、slLinearizer
または slTuner
インターフェイス s
に対して、インターフェイスの作成時に追加するか、addOpening
コマンドを使用して追加できます。永続的な開始点のリストから場所を削除するには、removeOpening
コマンドを使用します。
s
のすべての開始点を表示するには、コマンド プロンプトで s
と入力してインターフェイスの内容を表示します。s
のそれぞれの永続的な開始点の表示には、ブロック名、端子番号、およびこの場所から発信される信号の名前が含まれます。getOpenings
を使用して、すべての永続的なループ開始点のリストをプログラムで取得することもできます。
バージョン履歴
R2013b で導入R2020b: Simulink モデルをスパース状態空間モデルに線形化
Sparse Second Order ブロックまたは Descriptor State-Space ブロックを含む Simulink モデルからスパース モデルを線形化および取得できます。
Simulink モデルで Sparse Second Order を使用する場合の
mechss
モデル。Descriptor State-Space ブロックを使用し、[スパース モデルに線形化する] ブロック パラメーターを選択する場合の
sparss
モデル。
詳細については、スパース モデルの基礎を参照してください。例については、スパース 2 次モデル オブジェクトへの Simulink モデルの線形化を参照してください。
R2016b: 線形化時にモデルの入力、出力、状態、および状態微分の操作点のオフセットを計算
Simulink モデルを線形化する際にモデルの入力、出力、状態、および状態微分の操作点のオフセットを計算できます。3 つのオフセットにより、線形パラメーター変動 (LPV) システムの作成が合理化します。
操作点のオフセットを取得するには、まず linearizeOptions
または slTunerOptions
オブジェクトを作成して、StoreOffsets
オプションを true
に設定します。次に、モデルの slLinearizer
または slTuner
インターフェイスを作成します。
getCompSensitivity
の info
出力引数からオフセットを抽出し、関数 getOffsetsForLPV
を使用して LPV System ブロックの必要な形式に変換できます。
MATLAB コマンド
次の MATLAB コマンドに対応するリンクがクリックされました。
コマンドを MATLAB コマンド ウィンドウに入力して実行してください。Web ブラウザーは MATLAB コマンドをサポートしていません。
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)