LPV System
線形パラメーター変動 (LPV) システムのシミュレーション

ライブラリ:
Control System Toolbox /
Linear Parameter Varying
説明
"線形パラメーター変動" (LPV) システムとは、"スケジューリング パラメーター" と呼ばれる特定の時変パラメーターの関数としてダイナミクスが変動する線形状態空間モデルです。MATLAB® では、パラメーター依存の係数を使用して、状態空間形式で LPV モデルを表現します。
LPV システムは、数学的には次のように表現できます。
ここで、以下となります。
u(t) は入力
y(t) は出力
x(t) は初期値 xinit をもつモデルの状態
は、連続時間システムでは状態微分ベクトル 、離散時間システムでは状態更新ベクトル x[k+1]。ここで、k はサンプリング周期 "Ts" の数をカウントする整数インデックスです。
A(p)、B(p)、C(p)、および D(p) は、スケジューリング パラメーター ベクトル p でパラメーター化された状態空間行列です。
パラメーター p = p(t) は、モデルの入力と状態の測定可能な関数です。これらは、スカラー量またはいくつかのパラメーターのベクトルで指定できます。スケジューリング パラメーターのセットにより、LPV モデルが定義される "スケジューリング空間" を定義します。
dx0(p)、x0(p)、u0(p)、および y0(p) は、与えられたパラメーター値 p = p(t) または p[k] における 、x(t)、u(t)、および y(t) の値のオフセットです。
linearize
(Simulink Control Design) またはgetIOTransfer
(Simulink Control Design) などの関数を呼び出すときに、追加の線形化情報を返すことでオフセットを取得できます。例については、昇圧コンバーター モデルの LPV 近似 (Simulink Control Design)を参照してください。
注意
C(p) および D(p) がシステム出力 [y] に依存することがないようにしてください。そうしないと、結果の状態空間方程式 y = C(y)x + D(y)u により、代数ループが作成されます。これは、出力値 y を計算するために出力値がわかっている必要があるからです。この代数ループは不安定性や発散が発生しやすい傾向にあります。代わりに、時間 t、ブロック入力 [u]、および状態出力 [x] の観点で C および D を表してみてください。
同様の理由で、[dx] 出力に基づいて A(p) および B(p) をスケジュールしないでください。なお、[y] が状態と入力の固定された組み合わせの場合 (つまり、y = Cx + Du の場合 (C および D は定数行列))、A および B が [y] に依存しても安全です。
ブロックでは、LPV システムのグリッドベースの表現を実装します。スケジューリング パラメーターで値のグリッドを選択します。それぞれの値 p = p* で、状態空間 (ss
または idss
(System Identification Toolbox)) モデル オブジェクトとして対応する線形システムを指定します。生成された状態空間モデルの配列を使用して、LPV System ブロックを構成します。
ブロックは、操作点情報をもつ状態空間モデルの配列を受け入れます。スケジューリング変数の情報は、ブロックで LTI 配列の SamplingGrid
プロパティから抽出されます。スケジューリング変数は、LPV モデルのグリッドを定義します。これらは、スカラー値の量であり、時間の関数、入力および状態、あるいは定数を指定できます。これらは動作空間でローカル ダイナミクスの選択に使用されます。ソフトウェアは、これらの変数値を内挿します。ブロックは、データの内挿および外挿の手法でこの配列を使用してシミュレーションを実行します。
例
2 入力、3 出力、4 状態の LPV モデルについて考えます。入力 u(2)
および状態 x(1)
をスケジューリング パラメーターとして使用します。次の図に示すように Simulink® モデルを構成します。
質量が外部負荷コマンドの関数として変化する線形マス-バネ-ダンパー システムについて考えます。支配方程式は次のとおりです。
ここで、 は外部コマンド に依存する質量、 は減衰比、 はバネの剛性、 は強制入力です。 は特定の時刻 における質量の位置です。 の固定値に対して、システムは線形であり、次のように表せます。
,
ここで、 は状態ベクトル、 は の特定の値に対する質量の値です。
この例では、1 ~ 10 V の入力値の範囲でモデルの動作を学習します。 の各値に対して、質量を測定し、システムの線形表現を計算します。質量が という関係で入力と関連付けられるとします。1 ~ 10 の u
の値に対して、次のような線形システムの配列の結果となります。
c = 5; k = 300; u = 1:10; m = 10*u + 0.1*u.^2; for i = 1:length(u) A = [0 1; -k/m(i), -c/m(i)]; B = [0; 1/m(i)]; C = [1 0]; sys(:,:,i) = ss(A,B,C,0); end
変数 はスケジューリング入力です。この情報をモデルに追加します。
sys.SamplingGrid = struct('LoadCommand',u);
LPV System ブロックを構成します。
[状態空間配列] フィールドに
sys
を入力します。入力端子
par
を、load コマンドの値を生成する 1 次元のソース信号に接続します。ソースが 1 ~ 10 の値を提供する場合、ブロックは内挿を使用して特定の時刻インスタンスで線形モデルを計算します。それ以外の場合、ブロックは外挿を使用します。
LPV モデルを 100 N の一定の強制入力までシミュレートします。load コマンドのスケジューリング変数には乱数値を使用します。
model = "simMSDLPV";
open_system(model);
この例では、LPV System ブロックを使用してエンジン速度の線形パラメーター変動 (LPV) モデルをシミュレートする方法を示します。LPV System ブロックは、状態空間配列を内挿して LPV の応答をモデル化します。一般に、このような配列は非線形モデルを操作条件の範囲でバッチ線形化することで得られます。この例では、エンジン速度モデルの線形化された結果が scdspeedlpvData
に用意されています。このモデルの線形化の詳細については、エンジン速度モデルの線形化 (Simulink Control Design)を参照してください。
モデルを開きます。
model = "scdspeedLPVCompare";
open_system(model);
LPV モデルを実装するための線形化の結果を読み込みます。
load scdspeedlpvData.mat
LPV モデルが LPV Model サブシステムに実装されます。
LPV System ブロックは、スロットル角度を入力として取り、速度出力をスケジューリング変数として使用します。ブロック パラメーターは次のイメージに示すように構成されています。ここで、状態空間配列 sys
とオフセットは、非線形モデルをバッチ線形化して得られたものです。
モデルをシミュレートし、応答の比較をプロットします。
sim(model); plot(logsOut{1}.Values.Time,logsOut{1}.Values.Data) grid on legend("Nonlinear sim","LPV sim","LTI sim",Location="best")
LPV モデルは非線形応答の良好な近似を示しています。
拡張例
LTI 配列を使用したマルチモード ダイナミクスのシミュレーション
この例では、マルチモード ダイナミクスを示すシステムの線形パラメーター変動 (LPV) 表現を構成する方法を説明します。
制限
端子
入力
入力信号 u(t) を指定します。多入力の場合、この端子は入力の次元の信号を受け入れます。
スケジューリング空間を定義する変数の信号を提供します (サンプリング グリッド変数)。スケジューリング変数は、時間の関数、入力および状態、あるいは定数に指定できます。必要に応じて、LPV ブロックのクロック入力 (時刻)、入力信号 (u)、出力状態信号 (x)、または任意の外因的な信号を使用してスケジューリング信号を準備することで、必要な依存関係を実現できます。
注意
C(p) および D(p) がシステム出力 [y] に依存することがないようにしてください。そうしないと、結果の状態空間方程式 y = C(y)x + D(y)u により、代数ループが作成されます。これは、出力値 y を計算するために出力値がわかっている必要があるからです。この代数ループは不安定性や発散が発生しやすい傾向にあります。代わりに、時間 t、ブロック入力 [u]、および状態出力 [x] の観点で C および D を表してみてください。
同様の理由で、[dx] 出力に基づいて A(p) および B(p) をスケジュールしないでください。なお、[y] が状態と入力の固定された組み合わせの場合 (つまり、y = Cx + Du の場合 (C および D は定数行列))、A および B が [y] に依存しても安全です。
R2024b 以降
シミュレーションの開始時にローカル モデルで使用する初期条件。モデルの状態の数と等しい長さのベクトルとして指定します。
依存関係
この端子を有効にするには、[初期条件のソース] を [外部]
に設定します。
出力
線形パラメーター変動モデルの応答。
モデルの状態の値。
依存関係
この端子を有効にするには、ブロック パラメーターの [出力] タブで [状態の出力] を選択します。
状態微分の値。状態微分は、スケジューリング パラメーターの定義に使用される場合があります。ただし、[dx] 出力に基づいて A および B をスケジュールしないでください。
依存関係
この端子を有効にするには、ブロック パラメーターの [出力] タブで [状態微分 (連続時間) または更新 (離散時間) の出力] を選択します。
主要なシミュレーション タイム ステップにおけるローカル状態空間モデル データ。次の要素をもつバス信号として返されます。
A
— 状態行列B
— 入力行列C
— 出力行列D
— 直達行列InputDelay
— 入力遅延OutputDelay
— 出力遅延InternalDelay
— モデルの内部遅延
依存関係
この端子を有効にするには、ブロック パラメーターの [出力] タブで [内挿された状態空間データの出力] を選択します。
主要なシミュレーション タイム ステップにおける LPV モデルのオフセット データ。次の要素をもつバス信号として返されます。
InputOffset
OutputOffset
StateOffset
StateDerivativeOffset
依存関係
この端子を有効にするには、ブロック パラメーターの [出力] タブで [内挿されたオフセットの出力] を選択します。
パラメーター
ブロック パラメーターを対話形式で編集するには、プロパティ インスペクターを使用します。Simulink ツールストリップから、[シミュレーション] タブの [準備] ギャラリーで [プロパティ インスペクター] を選択します。
[LPV モデル] タブ
状態空間 (ss
または idss
(System Identification Toolbox)) モデルの配列です。配列内のすべてのモデルは、同じ状態の定義を使用しなければなりません。
状態空間配列の SamplingGrid
プロパティで、モデルのスケジューリング パラメーターと内挿グリッドを指定する必要があります。さらに、[操作点のオフセット] パラメーターを [オフセットを状態空間配列で使用]
に設定している場合、配列の Offsets
プロパティでモデルのオフセットを指定できます。これらのプロパティの詳細については、ss
モデルのリファレンス ページを参照してください。
ブロックが同期状態制御 (State Control (HDL Coder) ブロックを参照) を使用するモデル内にある場合は、離散時間モデルの配列を指定しなければなりません。
プログラムでの使用
ブロック パラメーター値をプログラムで設定するには、関数 set_param
(Simulink) を使用します。
パラメーター: | sys |
値: | ss or idss model array name in quotes |
例: set_param(gcb,"sys","sysArrayName")
R2024b 以降
初期条件のソースを指定します。
内部
— [初期条件] パラメーターを使用して状態の初期条件を指定します。外部
— ブロックの IC 入力端子で状態の初期条件を指定します。
プログラムでの使用
ブロック パラメーター値をプログラムで設定するには、関数 set_param
(Simulink) を使用します。
パラメーター: | InitialConditionSource |
値: | internal (既定値) | external |
シミュレーションの開始時にローカル モデルで使用する初期条件。モデルの状態の数と等しい長さのベクトルとして指定します。
依存関係
このパラメーターを有効にするには、[初期条件のソース] を [内部]
に設定します。
プログラムでの使用
ブロック パラメーター値をプログラムで設定するには、関数 set_param
(Simulink) を使用します。
パラメーター: | InitialCondition |
値: | "0" (既定値) | initial state values in quotes |
例: set_param(gcb,"InitialCondition","[0 0.1]")
R2024a 以降
操作点のオフセットの形式を指定します。
オフセットを double 配列として指定
— [入力のオフセット]、[出力のオフセット]、[状態のオフセット]、および [状態微分/更新のオフセット] の各パラメーターを使用してオフセットを指定します。オフセットを struct 配列として指定
— 入力、出力、状態、状態微分のオフセットをそれぞれ指定するu
、y
、x
、dx
のフィールドをもつ構造体配列としてオフセットを指定します。オフセットを状態空間配列で使用
— 状態空間配列のOffsets
プロパティで指定されたオフセットを使用します。
プログラムでの使用
ブロック パラメーター値をプログラムで設定するには、関数 set_param
(Simulink) を使用します。
パラメーター: | opSpecOption |
値: | "Specify Offsets as double arrays" (既定値) | "Specify offsets as struct array" | "Use offsets in state-space array" |
例: set_param(gcb,"opSpecOption","Specify offsets as struct array")
入力 u(t)
のオフセット。次のいずれかで指定します。
0
— 入力オフセットがない () 場合に使用します。入力数と同じ長さの double ベクトル — スケジューリング空間内で入力オフセットが同じ場合に使用します。
サイズ nu×1×N1×
...
×Nm の double 配列 — オフセットが存在し、スケジューリング空間内で異なる場合に使用します。ここで、nu は入力の数、N1×...
×Nm はスケジューリング グリッドのサイズです。たとえば、モデルに 3 つの入力、2 つの出力、4 つの状態があり、5 行 6 列の操作点のグリッドでスケジュールする場合、入力配列のサイズは 3×1×5×6 でなければなりません。状態空間配列sys
のサイズを確認するにはsize(sys)
を使用します。
依存関係
このパラメーターを有効にするには、[操作点のオフセット] の形式を [オフセットを double 配列として指定]
に設定します。
プログラムでの使用
ブロック パラメーター値をプログラムで設定するには、関数 set_param
(Simulink) を使用します。
パラメーター: | uOffset |
値: | "0" (既定値) | array name in quotes |
例: set_param(gcb,"uOffset","uOffArray")
出力 y(t)
のオフセット。次のいずれかで指定します。
0
— 出力オフセットがない () 場合に使用します。出力の数と同じ長さの double ベクトル — スケジューリング空間内で出力のオフセットが同じ場合に使用します。
サイズ ny×1×N1×
...
×Nm の double 配列 — オフセットが存在し、スケジューリング空間内で異なる場合に使用します。ここで、ny は出力の数、N1×...
×Nm はスケジューリング グリッドのサイズです。たとえば、モデルに 3 つの入力、2 つの出力、4 つの状態があり、5 行 6 列の操作点のグリッドでスケジュールする場合、入力配列のサイズは 2×1×5×6 でなければなりません。状態空間配列sys
のサイズを確認するにはsize(sys)
を使用します。
依存関係
このパラメーターを有効にするには、[操作点のオフセット] の形式を [オフセットを double 配列として指定]
に設定します。
プログラムでの使用
ブロック パラメーター値をプログラムで設定するには、関数 set_param
(Simulink) を使用します。
パラメーター: | yOffset |
値: | "0" (既定値) | array name in quotes |
例: set_param(gcb,"yOffset","yOffArray")
状態 x(t)
のオフセット。次のいずれかで指定します。
0
— 状態オフセットがない () 場合に使用します。状態の数と同じ長さの double ベクトル — スケジューリング空間内で状態のオフセットが同じ場合に使用します。
サイズ nx×1×N1×
...
×Nm の double 配列 — オフセットが存在し、スケジューリング空間内で異なる場合に使用します。ここで、nx は状態の数、N1×...
×Nm はスケジューリング グリッドのサイズです。たとえば、モデルに 3 つの入力、2 つの出力、4 つの状態があり、5 行 6 列の操作点のグリッドでスケジュールする場合、入力配列のサイズは 4×1×5×6 でなければなりません。状態空間配列sys
のサイズを確認するにはsize(sys)
を使用します。
依存関係
このパラメーターを有効にするには、[操作点のオフセット] の形式を [オフセットを double 配列として指定]
に設定します。
プログラムでの使用
ブロック パラメーター値をプログラムで設定するには、関数 set_param
(Simulink) を使用します。
パラメーター: | xOffset |
値: | "0" (既定値) | array name in quotes |
例: set_param(gcb,"xOffset","xOffArray")
状態微分または更新変数 dx(t)
のオフセット。次のいずれかで指定します。
平衡状態下の線形化により線形システム配列が取得されている場合、[平衡操作の条件の仮定] オプションを選択します。このオプションは、連続時間システムでは 、離散時間システムでは のオフセットに対応します。既定ではこのオプションが選択されています。
線形システムに平衡でない状態で取得されたシステムが少なくとも 1 つ含まれている場合、[平衡操作の条件の仮定] オプションをオフにします。[オフセット値] フィールドで、次のいずれかを指定します。
状態の数と同じ長さの double ベクトル — スケジューリング空間内で状態微分のオフセットが同じ場合に使用します。
サイズ nx×1×N1×
...
×Nm の double 配列 — オフセットが存在し、スケジューリング空間内で異なる場合に使用します。ここで、nx は状態の数、N1×...
×Nm はスケジューリング グリッドのサイズです。たとえば、モデルに 3 つの入力、2 つの出力、4 つの状態があり、5 行 6 列の操作点のグリッドでスケジュールする場合、入力配列のサイズは 4×1×5×6 でなければなりません。状態空間配列sys
のサイズを確認するにはsize(sys)
を使用します。
依存関係
このパラメーターを有効にするには、[操作点のオフセット] の形式を [オフセットを double 配列として指定]
に設定し、[平衡操作の条件の仮定] を無効にします。
プログラムでの使用
ブロック パラメーター値をプログラムで設定するには、関数 set_param
(Simulink) を使用します。
パラメーター: | dxOffset |
値: | "0" (既定値) | array name in quotes |
例: set_param(gcb,"dxOffset","dxOffArray")
R2024a 以降
モデルのオフセット。次のフィールドをもつ構造体として指定します。
フィールド | 説明 |
---|---|
u | 入力のオフセット |
y | 出力のオフセット |
x | 状態のオフセット |
dx | 状態微分のオフセット |
オフセット値がスケジューリング空間内で同じ場合、対応するフィールドの入力、出力、または状態の数と等しい長さの double ベクトルとして指定します。
オフセットがスケジューリング空間内で異なる場合、構造体配列を指定します。たとえば、モデルが 3 つの入力、2 つの出力および 4 つの状態をもつとします。このモデルを 5 行 6 列の操作点の配列を使用して線形化する場合、構造体配列のサイズは 5 行 6 列で、対応するフィールドの入力、出力、または状態の数と等しい長さのベクトルが各エントリに含まれていなければなりません。
関数 linearize
(Simulink Control Design) で StoreOffsets
オプションを true
に設定して線形化すると、info.Offsets
出力において、この形式でオフセットが返されます。
依存関係
このパラメーターを有効にするには、[操作点のオフセット] の形式を [オフセットを struct 配列として指定]
に設定します。 (R2024a 以降)
プログラムでの使用
ブロック パラメーター値をプログラムで設定するには、関数 set_param
(Simulink) を使用します。
パラメーター: | Offset |
値: | "struct" (既定値) | structure array name in quotes |
例: set_param(gcb,"Offset","OffsetStructName")
[固定エントリ] タブ
場合によっては、LPV モデルに変化の小さい係数が含まれることがあります。このタブのパラメーターを使用して、固定にするモデル行列と、そのモデル データのエントリをオーバーライドするノミナル値を指定できます。一部の状況では、シミュレーション用に A(p) などのパラメーター依存行列を固定値 A* に置き換えることがあります。たとえば、スケジューリングの範囲の平均値を A* で表すことができます。既定では、ブロックは [状態空間配列] のデータを使用して、どのエントリが固定でどのエントリが可変であるかを判別します (パフォーマンス上の理由から、ブロックは可変エントリのみを内挿します)。
このタブを使用して、たとえば LPV モデルを試したり簡略化したりするために、この既定の動作をオーバーライドできます。たとえば、A の 3 番目のエントリがあまり変化しないと判断し、その平均値にエントリを固定するように決定できます。固定として扱うエントリを logical 配列で指定し、それらの固定エントリに使用する値を [以下から値を読み取り] で指定します。false
は、LTI 配列のデータをオーバーライドしないことに対応します。つまり、このエントリが固定になるか可変になるかはデータに基づいて決まります。
それらの係数の位置を以下のいずれかとして指定します。
行列のすべてのエントリを同じ方法で処理する場合は、スカラーの boolean (
true
またはfalse
)。状態空間行列および遅延ベクトルについての既定値は
false
であり、これらが自由なものとして扱われることを意味します。対応する行列のサイズと互換性があるサイズの論理行列:
状態空間行列
固定エントリの行列のサイズ
A 行列 nx 行 nx 列
B 行列 nx 行 nu 列
C 行列 ny 行 nx 列
D 行列 ny 行 nu 列
入力遅延 nu 行 1 列
出力遅延 ny 行 1 列
内部遅延 ni 行 1 列
ここで、nu は入力の数、ny は出力の数、nx は状態の数、ni は内部遅延ベクトルの長さです。
固定エントリの位置を指定する数値インデックス。行列の要素の特定の添字
(i,j)
に対応する数値インデックスを生成する方法については、sub2ind
のリファレンス ページを参照してください。
位置を指定した後、[以下から値を読み取り] パラメーターを使用して固定係数の値を提供します。
固定係数の値を指定する状態空間モデル。次のいずれかで指定します。
状態空間配列内の最初のモデル
— 状態空間配列の最初のモデルを LPV モデルの固定係数に使用します。次の例では、状態空間配列をオブジェクトsys
で指定し、固定係数をモデルsys(:,:,1)
から取得しています。% Specify a 4-by-5 array of state-space models. sys = rss(4,2,3,4,5); a = 1:4; b = 10:10:50; [av,bv] = ndgrid(a,b); % Use "alpha" and "beta" variables as scheduling parameters. sys.SamplingGrid = struct('alpha',av,'beta',bv);
固定係数は、
[alpha=1, beta=10]
に対応するモデルsysFixed = sys(:,:,1)
から取得しています。A
行列の (2,1) 要素に強制的に固定する場合、シミュレーション時に使用する値はsysFixed.A(2,1)
になります。カスタム状態空間モデル
— 固定エントリに異なる状態空間モデルを指定します。[カスタム モデル] フィールドで、固定するモデルの変数を指定します。固定されたモデルは、LPV モデルの状態空間配列と同じ状態ベースを使用しなければなりません。
[スケジューリング] タブ
内挿法です。グリッドの位置から離れているスケジューリング パラメーター値の状態空間データを計算する方法を定義します。
次のオプションのうちの 1 つを指定します。
Flat
— 現在の点に最も近く、現在の点より大きくないグリッド点の状態空間データを選択します。"現在の点" は、現在時刻におけるスケジューリング パラメーターの値です。Nearest
— スケジューリング空間で最も近いグリッド点の状態空間データを選択します。Linear
— スケジューリング空間で 2 次元最近傍の線形内挿により状態空間データを取得します。ここで、d = スケジューリング パラメーターの数です。
既定の内挿法は、スケジューリング パラメーター値の規則的なグリッドの場合は [Linear]
です。不規則なグリッドの場合、選択した内容にかかわらず、常に Nearest
内挿法が使用されます。規則的および不規則的なグリッドの詳細は、規則的なグリッドと不規則なグリッドを参照してください。
[Linear]
法は、精度は高いのですが、計算に時間がかかります。[Flat]
および [Nearest]
法は、モード切り替えダイナミクスをもつモデルに最適です。
プログラムでの使用
ブロック パラメーター値をプログラムで設定するには、関数 set_param
(Simulink) を使用します。
パラメーター: | IMethod |
値: | "Linear" (既定値) | "Nearest" | "Flat" |
例: set_param(gcb,"IMethod","Flat")
外挿法です。状態空間配列に指定されている (SamplingGrid
プロパティで指定した) 範囲外となるスケジューリング パラメーター値の状態空間データを計算する方法を定義します。
次のオプションのうちの 1 つを指定します。
Clip
(既定) — 外挿を無効にして、現在の点に最も近い使用可能な最新のスケジューリング グリッド点に対応するデータを返します。Linear
— 現在値が最初のグリッド点の値より小さいか、最後のグリッド点の値より大きいかによって、各スケジューリング パラメーターの値の最初または最後のペア間の直線をそれぞれ近似させます。この方法では、現在の値に対応する直線上の点を返します。線形外挿では、内挿法も線形である必要があります。
プログラムでの使用
ブロック パラメーター値をプログラムで設定するには、関数 set_param
(Simulink) を使用します。
パラメーター: | EMethod |
値: | "Clip" (既定値) | "Linear" |
例: set_param(gcb,"EMethod","Linear")
ブロックでは、スケジューリング空間における現在のスケジューリング パラメーター値の位置を事前ルックアップ アルゴリズムを使用して決定します。[Linear search]
または [Binary search]
を選択します。各検索法は、それぞれ異なる状況で速度の利点をもっています。このパラメーターの詳細については、Prelookup (Simulink)ブロックのリファレンス ページを参照してください。
プログラムでの使用
ブロック パラメーター値をプログラムで設定するには、関数 set_param
(Simulink) を使用します。
ブロック パラメーター値をプログラムで取得するには、関数 get_param
(Simulink) を使用します。
パラメーター: | IndexSearch |
値: | "Binary Search" (既定値) | "Linear Search" |
例: set_param(gcb,"IndexSearch","Linear Search")
[コード生成] タブ
ブロックのデータ型。[double]
または [single]
として指定します。
依存関係
このオプションを有効にするには、離散時間状態空間モデルを入力として使用します。
プログラムでの使用
ブロック パラメーター値をプログラムで設定するには、関数 set_param
(Simulink) を使用します。
パラメーター: | DataType |
値: | "double" (既定値) | "single" |
例: set_param(gcb,"DataType","single")
遅延を含むモデル用に格納する入力ポイントの数に対応した、メモリ割り当ての初期サイズ。入力ポイントの数が初期バッファー サイズを超えた場合、ブロックは追加のメモリを割り当てます。既定のサイズは 1024 です。
モデルをアクセラレータ モードで実行するかモデルをビルドする場合は、初期バッファー サイズを、モデル内で予測される最大の遅延を扱えるよう十分大きいものにしてください。
プログラムでの使用
ブロック パラメーター値をプログラムで設定するには、関数 set_param
(Simulink) を使用します。
パラメーター: | InitBufferSize |
値: | "1024" (既定値) | positive integer greater than 5 in quotes |
例: set_param(gcb,"InitBufferSize","512")
前のタイム ステップでの遅延入出力データを保存するために固定バッファー サイズを使用するかどうかを指定します。このオプションは、入力または出力の遅延を含む連続時間 LPV システムに使用します。バッファーが満杯になると、新規データにより、既にバッファー内にあるデータが置き換えられます。ソフトウェアにより線形外挿が使用されて、バッファー内にない出力値を予測します。
プログラムでの使用
ブロック パラメーター値をプログラムで設定するには、関数 set_param
(Simulink) を使用します。
パラメーター: | FixedBuffer |
値: | "off" (既定値) | "on" |
例: set_param(gcb,"FixedBuffer","on")
拡張機能
C/C++ コード生成
Simulink® Coder™ を使用して C および C++ コードを生成します。
バージョン履歴
R2014b で導入LPV System ブロックにおいて、ブロック入力端子 IC で初期状態値を指定できるようになりました。この端子を有効にするには、[初期条件のソース] パラメーターを [外部]
に設定します。
初期状態パラメーター x0
の名前が InitialCondition
に変更されました。プログラムで set_param(blockPath,"x0","[0 0.1]")
などを使用して、このパラメーターをコードで設定している場合は、コードを set_param(blockPath,"InitialCondition","[0 0.1]")
に更新してください。
操作点のオフセットの指定について、LPV System ブロックで新たに 2 つの形式がサポートされるようになりました。
オフセットを struct 配列として指定
オフセットを状態空間配列で使用
R2024a より前は、ブロックでのオフセットの指定について、ブロック パラメーターで double 配列として指定する方法のみがサポートされていました。オフセットの形式は [操作点のオフセット] のリストを使用して指定します。
さらに、次の新しい強化がブロックに加えられています。
ブロックのアーキテクチャで下位の Varying State Space ブロックが使用されるようになりました。これにより、オフセットのサポートが合理化されています。
ブロックでシミュレーションの高速リスタートがサポートされるようになりました。このモードでは、ブロックの入力と [初期状態] パラメーターのみが調整可能です。残りのブロック パラメーターについては、変更するとモデルのトポロジが変わるため調整できません。
LPV System ブロックで、入力モデル配列のサンプリング グリッドにある大きさが 1 の次元と定数パラメーターが無視されるようになりました。したがって、定数値をもつパラメーター (つまり SamplingGrid
構造体のフィールド) をブロックの par 端子に渡してはなりません。この端子では可変フィールドのみを使用します。
R2024a より前は、定数値をもつパラメーターが渡されるとブロックからエラーが返されていました。
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
Web サイトの選択
Web サイトを選択すると、翻訳されたコンテンツにアクセスし、地域のイベントやサービスを確認できます。現在の位置情報に基づき、次のサイトの選択を推奨します:
また、以下のリストから Web サイトを選択することもできます。
最適なサイトパフォーマンスの取得方法
中国のサイト (中国語または英語) を選択することで、最適なサイトパフォーマンスが得られます。その他の国の MathWorks のサイトは、お客様の地域からのアクセスが最適化されていません。
南北アメリカ
- América Latina (Español)
- Canada (English)
- United States (English)
ヨーロッパ
- 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)