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® モデルを構成します。
LPV System ブロックを使用した線形パラメーター変動システムのシミュレーション
質量が外部負荷コマンドの関数として変化する線形マス-バネ-ダンパー システムについて考えます。支配方程式は次のとおりです。
ここで、 は外部コマンド に依存する質量、 は減衰比、 はバネの剛性、 は強制入力です。 は特定の時刻 における質量の位置です。 の固定値に対して、システムは線形であり、次のように表せます。
ここで、 は状態ベクトル、 は の特定の値に対する質量の値です。
この例では、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 ブロックの応答の比較
この例では、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 モデルは非線形応答の良好な近似を示しています。
制限
端子
入力
u — 入力信号
スカラー | ベクトル
入力信号 u(t) を指定します。多入力の場合、この端子は入力の次元の信号を受け入れます。
par — パラメーター値
スカラー | ベクトル
スケジューリング空間を定義する変数の信号を提供します (サンプリング グリッド変数)。スケジューリング変数は、時間の関数、入力および状態、あるいは定数に指定できます。必要に応じて、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] に依存しても安全です。
出力
y — モデルの出力
スカラー | ベクトル
線形パラメーター変動モデルの応答。
x — 状態値
スカラー | ベクトル
モデルの状態の値
依存関係
この端子を有効にするには、ブロック パラメーターの [出力] タブで [状態の出力] を選択します。
dx — 状態微分の値
スカラー | ベクトル
状態微分の値。状態微分は、スケジューリング パラメーターの定義に使用される場合があります。ただし、[dx] 出力に基づいて A および B をスケジュールしないでください。
依存関係
この端子を有効にするには、ブロック パラメーターの [出力] タブで [状態微分 (連続時間) または更新 (離散時間) の出力] を選択します。
ss — ローカル状態空間モデル
バス
主要なシミュレーション タイム ステップにおけるローカル状態空間モデル データ。次の要素をもつバス信号として返されます。
A
— 状態行列B
— 入力行列C
— 出力行列D
— 直達行列InputDelay
— 入力遅延OutputDelay
— 出力遅延InternalDelay
— モデルの内部遅延
依存関係
この端子を有効にするには、ブロック パラメーターの [出力] タブで [内挿された状態空間データの出力] を選択します。
offset — LPV モデルのオフセット
バス
主要なシミュレーション タイム ステップにおける LPV モデルのオフセット データ。次の要素をもつバス信号として返されます。
InputOffset
OutputOffset
StateOffset
StateDerivativeOffset
依存関係
この端子を有効にするには、ブロック パラメーターの [出力] タブで [内挿されたオフセットの出力] を選択します。
パラメーター
ブロック パラメーターを対話形式で編集するには、プロパティ インスペクターを使用します。Simulink ツールストリップから、[シミュレーション] タブの [準備] ギャラリーで [プロパティ インスペクター] を選択します。
[LPV モデル] タブ
状態空間配列 — 状態空間モデルの配列
ss
モデルまたは idss
モデルの配列
状態空間 (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")
初期状態 — 初期条件
0 (既定値) | ベクトル
シミュレーションの開始時にローカル モデルで使用する初期条件。モデルの状態の数と等しい長さのベクトルとして指定します。
プログラムでの使用
ブロック パラメーター値をプログラムで設定するには、関数 set_param
(Simulink) を使用します。
パラメーター: | x0 |
値: | "0" (既定値) | initial state values in quotes |
例: set_param(gcb,"x0","[0 0.1]")
操作点のオフセット — オフセットの指定形式
オフセットを double 配列として指定
(既定値) | オフセットを struct 配列として指定
| オフセットを状態空間配列で使用
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")
入力のオフセット — 入力のオフセット
0
(既定値) | 配列
入力 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")
出力のオフセット — 出力のオフセット
0
(既定値) | 配列
出力 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")
状態のオフセット — 状態のオフセット
0
(既定値) | 配列
状態 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 つ含まれている場合、[平衡操作の条件の仮定] オプションをオフにします。[オフセット値] フィールドで、次のいずれかを指定します。
dx
オフセット値が、スケジューリング空間内で同じ場合、状態の数と同じ長さの double ベクトルとして指定します。dx
オフセットが存在し、スケジューリング空間内で異なる場合、サイズ 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")
struct 配列 — オフセットの構造体配列
struct
(既定値) | 構造体配列の名前
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 モデル
状態空間配列内の最初のモデルを使用
(既定値) | カスタム値
固定係数の値を指定する状態空間モデル。次のいずれかで指定します。
状態空間配列内の最初のモデルを使用
(既定:) — 状態空間配列の最初のモデルを使用して、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 モデルの状態空間配列と同じ状態ベースを使用しなければなりません。
固定係数インデックス — 状態空間行列の固定係数
false
または 0
(既定値) | true
または 1
| logical 行列
固定する状態空間行列の係数および遅延ベクトルを指定します。
次のいずれかを指定します。
行列のすべてのエントリを同じ方法で処理する場合は、スカラーの 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
のリファレンス ページを参照してください。
[スケジューリング] タブ
内挿法 — 内挿法
Linear
(既定値) | Nearest
| Flat
内挿法です。グリッドの位置から離れているスケジューリング パラメーター値の状態空間データを計算する方法を定義します。
次のオプションのうちの 1 つを指定します。
Flat
— 現在の点に最も近く、現在の点より大きくないグリッド点の状態空間データを選択します。"現在の点" は、現在時刻におけるスケジューリング パラメーターの値です。Nearest
— スケジューリング空間で最も近いグリッド点の状態空間データを選択します。Linear
— スケジューリング空間で 2 次元最近傍の線形内挿により状態空間データを取得します。ここで、d = スケジューリング パラメーターの数です。
既定の内挿法は、スケジューリング パラメーター値の規則的なグリッドの場合は [Linear]
です。不規則なグリッドの場合、選択した内容にかかわらず、常に Nearest
内挿法が使用されます。規則的および不規則的なグリッドの詳細は、規則的なグリッドと不規則なグリッドを参照してください。
[Linear]
法は、精度は高いのですが、計算に時間がかかります。[Flat]
および [Nearest]
法は、モード切り替えダイナミクスをもつモデルに最適です。
プログラムでの使用
ブロック パラメーター値をプログラムで設定するには、関数 set_param
(Simulink) を使用します。
パラメーター: | IMethod |
値: | "Linear" (既定値) | "Nearest" | "Flat" |
例: set_param(gcb,"IMethod","Flat")
外挿法 — 外挿法
Clip
(既定値) | Linear
外挿法です。状態空間配列に指定されている (SamplingGrid
プロパティで指定した) 範囲外となるスケジューリング パラメーター値の状態空間データを計算する方法を定義します。
次のオプションのうちの 1 つを指定します。
Clip
(既定) — 外挿を無効にして、現在の点に最も近い使用可能な最新のスケジューリング グリッド点に対応するデータを返します。Linear
— 現在値が最初のグリッド点の値より小さいか、最後のグリッド点の値より大きいかによって、各スケジューリング パラメーターの値の最初または最後のペア間の直線をそれぞれ近似させます。この方法では、現在の値に対応する直線上の点を返します。線形外挿では、内挿法も線形である必要があります。
プログラムでの使用
ブロック パラメーター値をプログラムで設定するには、関数 set_param
(Simulink) を使用します。
パラメーター: | EMethod |
値: | "Clip" (既定値) | "Linear" |
例: set_param(gcb,"EMethod","Linear")
インデックス検索法 — 事前ルックアップ アルゴリズム
Binary search
(既定値) | Linear search
ブロックでは、スケジューリング空間における現在のスケジューリング パラメーター値の位置を事前ルックアップ アルゴリズムを使用して決定します。[Linear search]
または [Binary search]
を選択します。各検索法は、それぞれ異なる状況で速度の利点をもっています。このパラメーターの詳細については、Prelookup (Simulink)ブロックのリファレンス ページを参照してください。
プログラムでの使用
ブロック パラメーター値をプログラムで設定するには、関数 set_param
(Simulink) を使用します。
ブロック パラメーター値をプログラムで取得するには、関数 get_param
(Simulink) を使用します。
パラメーター: | IndexSearch |
値: | "Binary Search" (既定値) | "Linear Search" |
例: set_param(gcb,"IndexSearch","Linear Search")
前回のインデックス結果を使ってインデックス検索を始める — 前のタイム ステップで検索を開始
on
(既定値) | off
[コード生成] タブ
ブロックのデータ型 (離散時間の場合のみ) — ブロックのデータ型
double
(既定値) | single
ブロックのデータ型。[double]
または [single]
として指定します。
依存関係
このオプションを有効にするには、離散時間状態空間モデルを入力として使用します。
プログラムでの使用
ブロック パラメーター値をプログラムで設定するには、関数 set_param
(Simulink) を使用します。
パラメーター: | DataType |
値: | "double" (既定値) | "single" |
例: set_param(gcb,"DataType","single")
遅延の初期バッファー サイズ — 初期バッファー サイズ
1024
(既定値) | 5 より大きい正の整数
遅延を含むモデル用に格納する入力ポイントの数に対応した、メモリ割り当ての初期サイズ。入力ポイントの数が初期バッファー サイズを超えた場合、ブロックは追加のメモリを割り当てます。既定のサイズは 1024 です。
モデルをアクセラレータ モードで実行するかモデルをビルドする場合は、初期バッファー サイズを、モデル内で予測される最大の遅延を扱えるよう十分大きいものにしてください。
プログラムでの使用
ブロック パラメーター値をプログラムで設定するには、関数 set_param
(Simulink) を使用します。
パラメーター: | InitBufferSize |
値: | "1024" (既定値) | positive integer greater than 5 in quotes |
例: set_param(gcb,"InitBufferSize","512")
固定バッファー サイズを使用 — 固定バッファー サイズを使用
off
(既定値) | on
前のタイム ステップでの遅延入出力データを保存するために固定バッファー サイズを使用するかどうかを指定します。このオプションは、入力または出力の遅延を含む連続時間 LPV システムに使用します。バッファーが満杯になると、新規データにより、既にバッファー内にあるデータが置き換えられます。ソフトウェアにより線形外挿が使用されて、バッファー内にない出力値を予測します。
プログラムでの使用
ブロック パラメーター値をプログラムで設定するには、関数 set_param
(Simulink) を使用します。
パラメーター: | FixedBuffer |
値: | "off" (既定値) | "on" |
例: set_param(gcb,"FixedBuffer","on")
拡張機能
C/C++ コード生成
Simulink® Coder™ を使用して C および C++ コードを生成します。
バージョン履歴
R2014b で導入R2024a: オフセットのサポートの改善とその他の強化点
操作点のオフセットの指定について、LPV System ブロックで新たに 2 つの形式がサポートされるようになりました。
オフセットを struct 配列として指定
オフセットを状態空間配列で使用
R2024a より前は、ブロックでのオフセットの指定について、ブロック パラメーターで double 配列として指定する方法のみがサポートされていました。オフセットの形式は [操作点のオフセット] のリストを使用して指定します。
さらに、次の新しい強化がブロックに加えられています。
ブロックのアーキテクチャで下位の Varying State Space ブロックが使用されるようになりました。これにより、オフセットのサポートが合理化されています。
ブロックでシミュレーションの高速リスタートがサポートされるようになりました。このモードでは、ブロックの入力と [初期状態] パラメーターのみが調整可能です。残りのブロック パラメーターについては、変更するとモデルのトポロジが変わるため調整できません。
R2024a: SamplingGrid
の定数パラメーターを無視
LPV System ブロックで、入力モデル配列のサンプリング グリッドにある大きさが 1 の次元と定数パラメーターが無視されるようになりました。したがって、定数値をもつパラメーター (つまり SamplingGrid
構造体のフィールド) をブロックの par 端子に渡してはなりません。この端子では可変フィールドのみを使用します。
R2024a より前は、定数値をもつパラメーターが渡されるとブロックからエラーが返されていました。
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)