ssInterpolant
構文
説明
ssInterpolant
は、時間またはパラメーター空間でサンプリングした局所的な ss
モデルの集合について、線形時変 (LTV) または線形パラメーター変動 (LPV) の大域的な動作に LTI の局所的な動作を内挿する LTV モデルまたは LPV モデルを作成します。ssInterpolant
を使用して、解析的な LTV モデルまたは LPV モデルをグリッド付きの LTV モデルまたは LPV モデルにしたり、グリッド付きの LTV モデルまたは LPV モデルをリサンプリングしたりすることもできます。
例
バッチ線形化の結果からの LPV モデルの作成
この例では、貯水槽の Simulink® モデルのバッチ線形化から取得した状態空間モデルの配列と関連オフセットから LPV モデルを作成する方法を示します。
Simulink モデルを開きます。
mdl = 'watertankNLModel';
open_system(mdl)
水位の初期条件を指定します。
h0 = 10;
モデルの線形解析ポイントを指定します。
io(1) = linio('watertankNLModel/Step',1,'input'); io(2) = linio('watertankNLModel/H',1,'output');
モデルをシミュレートし、時間スナップショットで操作点を抽出します。
tlin = [0 30 40 50 60 70 80]; op = findop(mdl,tlin);
線形化をオフセットと共に計算します。
options = linearizeOptions('StoreOffsets',true);
[linsys,~,info] = linearize(mdl,io,op,options);
高さの値のグリッドを指定し、LPV モデルを作成します。このモデルでは、高さは最初の状態です。
h = zeros(size(tlin)); for ct=1:numel(h) h(ct) = op(ct).States(1).x; end linsys.SamplingGrid.H = h; linsys.Offsets = info.Offsets;
gLPV = ssInterpolant(linsys,'spline')
Continuous-time state-space LPV model with 1 outputs, 1 inputs, 1 states, and 1 parameters.
watertank
モデルをシミュレートします。
h0 = 15; sim(mdl); usim = getElement(logsOut,'V'); hsim = getElement(logsOut,'H');
正確なパラメーターの軌跡を使用して LPV モデルをシミュレートします。
t = linspace(0,150,200); p = @(t,x,u) x(1); u = interp1(usim.Values.Time,usim.Values.Data,t); ylpv = lsim(gLPV,u,t,h0,p);
結果をプロットします。
plot(hsim.Values.Time,hsim.Values.Data,t,ylpv,'--') legend('Simulink model','LPV model')
LPV モデルは非線形モデルの良好な近似を示しています。
解析的 LPV モデルからグリッド付き LPV モデルへの変換
この例では、dataFcnMaglev.m
で磁気浮上システムの行列とオフセットを定義します。ボールに対する磁力を発生させるコイル電流を使用して、磁気浮上で浮遊するボールの高さを制御します。
LPV モデルを作成します。
h0 = 1;
lpvSys = lpvss('h',@dataFcnMaglev,0,0,h0)
Continuous-time state-space LPV model with 1 outputs, 1 inputs, 2 states, and 1 parameters.
lpvSys.StateName = {'h','hdot'}; lpvSys.InputName = 'current'; lpvSys.InputName = 'height';
高さ h
について、パラメーターの変化を定義します。
hmin = 0.05; hmax = 0.25; hcd = linspace(hmin,hmax,5); SamplingGrid.h = hcd;
グリッド付きモデルに変換します。
glpvSys1 = ssInterpolant(lpvSys,SamplingGrid)
Continuous-time state-space LPV model with 1 outputs, 1 inputs, 2 states, and 1 parameters.
このコマンドは、同じパラメーター空間でサンプリングされたローカル モデルの配列からグリッド付きモデルを作成することと等価です。
ssArray = psample(lpvSys,SamplingGrid); glpvSys2 = ssInterpolant(ssArray);
グリッド付き LPV モデルの外挿法の比較
この例では、バッチ線形化の結果からの LPV モデルの作成の例で貯水槽の Simulink® モデルのバッチ線形化から取得した状態空間モデルの配列と関連オフセットについて考えます。
この貯水槽システムのダイナミクスは次の方程式で記述されます。
線形化の結果を読み込みます。
load watertankLinModel.mat
内挿法 spline
と外挿法 clip
を使用してグリッド付きモデルを作成します。
glpv1 = ssInterpolant(linsys,info.Offsets,"spline","clip");
外挿 spline
を使用してグリッド付きモデルを作成します。
glpv2 = ssInterpolant(linsys,info.Offsets,"spline","spline");
作成するグリッドの外の点から初期の高さが始まる場合における、両方のグリッド付きモデルのシミュレーション結果を比較します。水槽がほぼ空になるように高さを設定します。
h0 = 0.4; sim("watertankNLModel.slx"); usim = getElement(logsOut,"V"); hsim = getElement(logsOut,"H");
正確なパラメーターの軌跡を使用して LPV モデルをシミュレートします。
t = linspace(0,150,200); p = @(t,x,u) x(1); u = interp1(usim.Values.Time,usim.Values.Data,t); ylpv1 = lsim(glpv1,u,t,h0,p); ylpv2 = lsim(glpv2,u,t,h0,p); plot(t,ylpv1,t,ylpv2,"--",hsim.Values.Time,hsim.Values.Data,".-") legend("clip extrapolation","spline extrapolation", ... "nonlinear simulation",Location="best")
水槽がほぼ空になったときの非線形性による傾きの急な変化について、clip
メソッドよりも spline
メソッドで適切に取得されています。
入力引数
ssArray
— 状態空間モデルの配列
ss
オブジェクトの配列
状態空間 (ss
) モデルの配列。状態空間オブジェクトの SamplingGrid
プロパティを使用して、ssArray
のモデルの時間とパラメーターの依存性を指定し、各モデルに時間とパラメーターの値を割り当てます。時間依存性の記述と解釈されるフィールド Time
を除き、SamplingGrid
のフィールドの名前は LPV モデルのパラメーターになります。フィールドが Time
のみの場合、ssInterpolant
は LTV モデルを返します。定数値のフィールドは関数で無視されます。
さらに、ssArray
の Offsets
プロパティを使用して、微分、状態、入力、および出力の線形化オフセットを指定できます (R2024a 以降)。SamplingGrid
プロパティと Offsets
プロパティの詳細については、ss
のリファレンス ページを参照してください。
ssArray
および対応する offsets
は、次のいずれかの方法でも取得できます。
Simulink® モデルのバッチ線形化を
StoreOffsets
オプションを指定して実行する。詳細については、linearize
(Simulink Control Design) およびlinearizeOptions
(Simulink Control Design) を参照してください。既存の LTV モデルまたは LPV モデルをサンプリングする。詳細については、
sample
を参照してください。
offsets
— モデルのオフセット
構造体配列
モデルのオフセット。ssArray
と同じ次元の構造体配列として指定します。オフセットの各構造体には次のフィールドが必要です。
フィールド | 説明 |
---|---|
x | 状態のオフセット。長さ nx の列ベクトルとして指定します。nx は ssArray にある状態の数です。 |
dx | 微分のオフセット。長さ nx の列ベクトルとして指定します。nx は ssArray にある状態の数です。 |
u | 入力のオフセット。長さ nu の列ベクトルとして指定します。nu は ssArray にある入力の数です。 |
y | 出力のオフセット。長さ ny の列ベクトルとして指定します。ny は ssArray にある出力の数です。 |
ssArray
および対応する offsets
は、次のいずれかの方法でも取得できます。
Simulink モデルのバッチ線形化を
StoreOffsets
オプションを指定して実行する。詳細については、linearize
(Simulink Control Design) およびlinearizeOptions
(Simulink Control Design) を参照してください。既存の LTV モデルまたは LPV モデルをサンプリングする。詳細については、
sample
を参照してください。
いずれのフィールドについても、モデルにオフセットがない場合は []
に設定できます。
vSys
— LTV モデルまたは LPV モデル
ltvss
オブジェクト | lpvss
オブジェクト
LTV モデルまたは LPV モデル。ltvss
オブジェクトまたは lpvss
オブジェクトとして指定します。
vSys
が ltvss
オブジェクトまたは lpvss
オブジェクトの場合、ssInterpolant
は、S
を使用して指定されたグリッドの値でグリッド付きの LTV モデルまたは LPV モデルを作成します。
S
— サンプリング グリッド
struct
サンプリング グリッドの値。構造体として指定します。S
は、vSys
をサンプリングする時間/パラメーターの値のグリッドを定義します。グリッド付きの LTV モデルまたは LPV モデルは、それらのグリッド点間を内挿します。
LTV モデルの場合、
S
はフィールドTime
をもつ構造体配列です。たとえば、配列Tvalues
でサンプリング時間が指定されている場合、S
の構造体は次のようになります。S = struct('Time',Tvalues)
LPV モデルの場合、
S
は LPV モデルvSys
のParameterName
プロパティに対応するパラメーター名のフィールドとTime
をもつ構造体です。たとえば、四角形のグリッドを作成するために、ndgrid
を使用してこの構造体の値を生成できます。たとえば、vSys
に'speed'
および'altitude'
という名前の 2 つのパラメーターがあり、それらの値が配列P1vals
およびP2vals
を使用して指定されている場合、S
の構造体は次のようになります。[P1,P2] = ndgrid(P1vals,P2vals); S = struct('speed',P1,'altitude',P2)
LPV モデルのダイナミクスに時間に対する明示的な依存性がない場合は、
S
にフィールドTime
を指定しないでください。
離散時間の場合、サンプリング周期 Ts
の数をカウントする整数インデックス値 k
として Time
を指定します。絶対時間は t
= k*Ts
で与えられます。
IMethod
— 内挿法
'linear'
(既定値) | 'nearest'
| 'next'
| 'previous'
| 'pchip'
| 'cubic'
| 'spline'
| 'makima'
| 'natural'
内挿法。パラメーター グリッドのタイプに応じて、次のいずれかとして指定します。
四角形のグリッド —
'linear'
、'nearest'
、'next'
、'previous'
、'pchip'
、'cubic'
、'spline'
、または'makima'
。詳細については、griddedInterpolant
を参照してください。散布型のグリッド —
'linear'
、'nearest'
、または'natural'
。詳細については、scatteredInterpolant
を参照してください。
IMethod
と EMethod
の両方の引数を省略した場合の既定値は、IMethod
は 'linear'
、EMethod
は 'clip'
です。
EMethod
— 外挿法
'clip'
(既定値) | 'linear'
| 'nearest'
| 'next'
| 'previous'
| 'pchip'
| 'cubic'
| 'spline'
| 'makima'
| 'none'
外挿法。パラメーター グリッドのタイプに応じて、次のいずれかとして指定します。'clip'
、'linear'
、'nearest'
、'next'
、'previous'
、'pchip'
、'cubic'
、'spline'
、または 'makima'
のいずれかです。さらに、'none'
を指定できます。この場合、グリッドの領域の外側をクエリすると NaN
値が返されます。
四角形のグリッド —
'clip'
、'linear'
、'nearest'
、'next'
、'previous'
、'pchip'
、'cubic'
、'spline'
、または'makima'
。さらに、'none'
を指定できます。この場合、グリッドの領域の外側をクエリするとNaN
値が返されます。詳細については、griddedInterpolant
を参照してください。散布型のグリッド —
'linear'
、'nearest'
、または'none'
。詳細については、scatteredInterpolant
を参照してください。
IMethod
と EMethod
の両方の引数を省略した場合の既定値は、IMethod
は 'linear'
、EMethod
は 'clip'
です。
'clip'
メソッドでは、各パラメーターの値がグリッド内で [pmin,pmax] の範囲に制限されます。このメソッドは、Simulink のルックアップ テーブル ブロックの 'Clip'
メソッドに似ています。
出力引数
sys
— グリッド付きの LTV モデルまたは LPV モデル
GriddedLTVSS
オブジェクト | GriddedLPVSS
オブジェクト
グリッド付きの LTV モデルまたは LPV モデル。それぞれ GriddedLTVSS
オブジェクトまたは GriddedLPVSS
オブジェクトとして返されます。
GriddedLTVSS
オブジェクトおよび GriddedLPVSS
オブジェクトには、ltvss
オブジェクトおよび lpvss
オブジェクトのプロパティに加え、Grid
、Interpolation
、Extrapolation
の各プロパティがあります。これらは、グリッド付きモデルの作成に使用されるグリッドの値、内挿法、外挿法をそれぞれ指定します。
制限
散布内挿 (R2023b 以降)は、3 次元までのパラメーター グリッドでのみサポートされます。
バージョン履歴
R2023a で導入R2024a: オフセットが ss
配列に格納されている場合のグリッド付きモデルの作成に使用する新しい構文
新しい構文 sys = ssInterpolant(ssArray)
は、オフセットが状態空間モデル配列 ssArray
の Offsets
プロパティに格納されている場合のグリッド付きモデルの作成に使用します。
R2023b: 散布パラメーター サンプルのサポート
R2023b 以降では、ssInterpolant
は 2 次元または 3 次元のパラメーター空間内の散布点で指定された状態空間データを内挿できます。LPV モデルが時間に明示的に依存している場合、最大 3 つのパラメーターに時間値が含まれます。
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)