Main Content

Simulink データを使用した連続時間モデルの推定

この例では、System Identification Toolbox™ を使用して、Simulink® でシミュレートされたモデルを同定する方法を説明します。この例では、連続時間システムおよび遅延を処理する方法と、入力のサンプル間動作の重要性について説明します。

金宝appsimulinkモデルからシミュレーションデータ取得取得

以下の Simulink モデルで記述されるシステムを見てみましょう。

open_system('iddemsl1')set_param('iddemsl1/Random Number',,,,'seed',,,,'0'

赤い部分,部分はコントローラー,はスイープ正弦波(チャープ信号)ですですですですです。データデータののサンプルサンプル时间时间时间时间时间时间时间时间はははははははははは

このシステムは、idpoly构造をして表さ。。

m0 = idpoly(1,0.1,1,1,[1 0.5],'Ts',,,,0,“ inputdelay',,,,1,'NoiseVariance',,,,0.01)
m0 = Continuous-time OE model: y(t) = [B(s)/F(s)]u(t) + e(t) B(s) = 0.1 F(s) = s + 0.5 Input delays (listed by channel): 1 Parameterization: Polynomial orders: nb=1 nf=1 nk=0 Number of free coefficients: 2 Use "polydata", "getpvec", "getcov" for parameters and their uncertainties. Status: Created by direct construction or transformation. Not estimated.

iddemsl1モデルをし,そのををiddataオブジェクトに保存します。

sim('iddemsl1')dat1e = iddata(y,u,0.5);% The IDDATA object

検証のため、もう一度シミュレーションを実行します。

set_param('iddemsl1/Random Number',,,,'seed',,,,'13')SIM('iddemsl1')dat1v = iddata(y,u,0.5);

最初のでた推定データをてみましょう。

plot(dat1e)

シミュレーションデータ使用し离散モデルの推定

まず最初に、既定の次数の離散モデルを評価し、データ特性の予備情報を取得します。

m1 = n4sid(dat1e,'最好的'% A default order model
m1 =离散时间确定的状态空间模型:x(t + ts)= a x(t) + b u(t) + k e(t)y(t)y(t)= c x(t) + d u(t)+ e(t) A = x1 x2 x3 x1 0.7881 0.1643 0.1116 x2 -0.1214 0.4223 -0.8489 x3 0.155 0.7527 0.2119 B = u1 x1 -0.0006427 x2 -0.02218 x3 0.07347 C = x1 x2 x3 y1 -5.591 0.871 1.189 D = u1 y1 0 K = y1 x1 -0.001856 x2 0.002363 x3 -0.06805 Sample time: 0.5 seconds Parameterization: FREE form (all coefficients in A, B, C free). Feedthrough: none Disturbance component: estimate Number of free coefficients: 18 Use "idssdata", "getpvec", "getcov" for parameters and their uncertainties. Status: Estimated using N4SID on time domain data "dat1e". Fit to estimation data: 86.17% (prediction focus) FPE: 0.01281, MSE: 0.01251

モデルが検证で再现されかを确认し。。

比较(dat1v,m1)

ご覧の,データは,モデルモデル予测さていいます。。データデータ特性特性特性をを详しく详しく评価するするためためため,,,解析解析のdat1eを使用して算出したノンパラメトリックなインパルス応答を検査します。

Impmodel= impulseest(dat1e,[],'negative');Clf H = ImpulSeplot(ImpModel);展示信号(H,3)

Impmodelは次数 (係数の数) が自動的に決定される FIR モデルです。また、ここでは負の遅延に対するインパルス応答を計算し、フィードバックの影響を解析します。負のラグによる影響は無視できるものとは限りません。これは、制御器によるものです (出力フィードバック)。これは、インパルス応答推定を、時間遅延を決定するときに使用できないことを意味します。その代わりに、複数の低次数 ARX モデルを異なる遅延で構築し、最適な適合を求めます。

V = arxstruc(dat1e,dat1v,struc(1:2,1:2,1:10)); nn = selstruc(V,0)%delay is the third element of nn
nn = 2 2 3

3ラグ,となり。(これこれ正しい値です。。时间时间时间时间秒秒秒ででででででででラグラグラグラグラグなりなり,ののははははははは。

m2 = arx(dat1e,nn)比较(dat1v,m1,m2);
m2 =离散ARX模型:一个(z) y (t) = B (z) u (t)+ e(t) A(z) = 1 - 0.2568 z^-1 - 0.3372 z^-2 B(z) = 0.04021 z^-3 + 0.04022 z^-4 Sample time: 0.5 seconds Parameterization: Polynomial orders: na=2 nb=2 nk=3 Number of free coefficients: 4 Use "polydata", "getpvec", "getcov" for parameters and their uncertainties. Status: Estimated using ARX on time domain data "dat1e". Fit to estimation data: 85.73% (prediction focus) FPE: 0.01346, MSE: 0.0133

推定の改良

2 つのモデルm1およびm2は、シミュレーションで同様の動作を示します。ここで、次数と遅延を微調整します。遅延を 2 に修正し (直達がないことに加え、最終的な遅延は 3 サンプルになり)、この遅延の値が設定されている既定の次数の状態空間モデルを検出します。

m3 = n4sid(dat1e,'最好的',,,,“ inputdelay',,,,2,'Feedthrough',,,,false);% Refinement for prediction error minimization using pem (could also use% |ssest|)m3 = pem(dat1e, m3);

推定さた行列をてみます。

m3.a%a-matrix的结果模型
ANS = 0.7332 -0.3784 0.1735 0.4705 0.3137 -0.6955 -0.0267 0.7527 0.6343

3次がに选択れここに「のの」遅延遅延遅延遅延遅延遅延ををを加える加えるとと,,,,,,,次次次次状态空间空间

自動次数選択に頼りすぎることはお勧めできません。選択は、無作為の誤差に影響されます。最適な方法は、モデルの零点と極を信頼領域と合わせて評価することです。

clf h = iopzplot(m3); showConfidence(h,2)置信区域的百分比区域对应于2个标准偏差

単位円周での 2 極/零点は明らかにキャンセルされると思われ、1 次のダイナミクスで十分であることがわかります。この情報を使用して、新たに 1 次推定を行います。

m4 = sest(dat1e,1,'Feedthrough',,,,false,“ inputdelay',,,,2,'Ts',,,,dat1e.Ts); compare(dat1v,m4,m3,m1)

相比プロットに,シンプルなな次次次m4が良好をしいること示さてます。。したがって,このモデルをを最终最终结果として选択选択

離散時間モデルの連続時間モデルへの変換 (LTI)

このモデル时间にし,伝达のででますます。

mc = d2c(m4); idtf(mc)
ans = From input "u1" to output "y1": 0.09828 exp(-1*s) * ---------- s + 0.4903 Continuous-time identified transfer function.参数化:极点数:1零数:0免费系数的数量:2使用“ tfdata”,“ getpvec”,“ getCov”,“ getCov”,用于参数及其不确定性。状态:通过直接施工或转换创建。未估计。

前述のように、システムの良好な記述が得られます。

連続時間モデルの直接推定

连続时间直接推定こともでき。モデルモデルモデルm42サンプルサンプル遅延あります。。これこれは秒の遅延表します。。ここは,,ssestコマンドを使用してこの推定を実行します。

m5 = ssest(dat1e,1,'Feedthrough',,,,false,“ inputdelay',,,,1); present(m5)
M5 =连续时间确定的状态空间模型:DX/DT = A X(T) + B U(T) + K E(T)Y(T)= C X(T) + D U(T) + D U(T) + E(t)a = x1 x1 -0.4903 +/- 0.007889 b = u1 x1 0.01345 +/- 6.413e +10 c = x1 y1 7.307 +/- 3.484e +/- 3.484e +13 d = u1 y1 y1 y1 y1 y1 0 k = y1 x1 x1 -0.02227 +/0.02227 +/-1.062e+1​​1输入延迟(秒):1参数化:自由形式(A,B,C免费)。进料:无干扰部分:免费系数的估计数:4使用“ IDSSDATA”,“ GETPVEC”,“ GetCov”,用于参数及其不确定性。状态:终止条件:接近(本地)最小值,(norm(g)
               

不确かさ解析

87%适合适合てていいますモデルモデルモデルモデルモデルm5パラメーターはのかさを示し示しいます。。,モデルモデルががが実际実际にに必要パラメーターパラメーターよりより多く多くののパラメーターを使用ししてててて,,ののののののの推定推定推定推定モデルのさのの影响を表示するははははは通り通ります。。

  1. 不確かさをパラメーターではなくモデルの応答の信頼限界として表示する。

  2. モデルを正準形で推定する。

ここでの方法试しみましょ。まずモデルを正准形形で推定推定。。。

m5Canon = ssest(dat1e,1,'Feedthrough',,,,false,“ inputdelay',,,,1,'Form',,,,'典范');present(m5Canon)
m5Canon =连续时间确定整数model: dx/dt = A x(t) + B u(t) + K e(t) y(t) = C x(t) + D u(t) + e(t) A = x1 x1 -0.4903 +/- 0.007881 B = u1 x1 0.09828 +/- 0.001559 C = x1 y1 1 D = u1 y1 0 K = y1 x1 -0.1628 +/- 0.03702 Input delays (seconds): 1 Parameterization: CANONICAL form with indices: 1. Feedthrough: none Disturbance component: estimate Number of free coefficients: 3 Use "idssdata", "getpvec", "getcov" for parameters and their uncertainties. Status: Termination condition: Near (local) minimum, (norm(g) < tol).. Number of iterations: 4, Number of function evaluations: 9 Estimated using SSEST on time domain data "dat1e". Fit to estimation data: 87.34% (prediction focus) FPE: 0.01054, MSE: 0.01047 More information in model's "Report" property.

m5Canonはモデルの正準パラメーター化を使用します。推定データとの適合はモデルm5と同等です。パラメーターの値の不確かさが小さいことから、信頼性が高いことがわかります。しかし、m5の場合と同様に、不確かさの値が大きくても "良くない" モデルであるとは限りません。これらのモデルの品質を確実なものとするため、標準偏差 3 に対応する信頼領域を使用して、時間領域および周波数領域での応答を表示します。また、元のシステムm0を比较ためプロットし。。

ボード線図です。

clf opt = bodeoptions; opt.FreqScale =“线性”; h = bodeplot(m0,m5,m5Canon,opt); showConfidence(h,3) legend节目

ステップ プロットです。

clf showConfidence(stepplot(m0,m5,m5Canon),3) legend节目

2 つのモデルの不確かさの範囲はほぼ同じです。同様に、これらのモデルの信頼領域を使用して、極-零点配置図 (iopzplot)とナイキスト(NyquistPlot)を作成こともます。。

IDTF(M5)
ans = From input "u1" to output "y1": 0.09828 exp(-1*s) * ---------- s + 0.4903 Continuous-time identified transfer function.参数化:极点数:1零数:0免费系数的数量:2使用“ tfdata”,“ getpvec”,“ getCov”,“ getCov”,用于参数及其不确定性。状态:由IDSS模型转换创建。

連続時間推定におけるサンプル間動作の考慮

データからた时间时间モデルをする场合入力入力信号信号のサンプル间间动作动作ををを考虑考虑考虑ことことことことことががががが重要重要重要重要重要重要重要重要重要ですですですですですですですですですですです。。。。。。。。。このこのは的なってい。。回路ををししの连続连続システムをををををを评価评価评価评価ししますますます。入力入力入力入力入力およびおよびおよび2

open_system('iddemsl3')SIM('iddemsl3')dat2e = iddata(y,u,0.5);

測定値に合わせて調整されるときに、サンプリング プロパティとサンプル間入力動作 (現在の入力) が盛り込まれるため、離散時間モデルはこれらのデータでも良好です。ただし、連続時間モデルを構築する場合、サンプル間プロパティを把握しておくことが必須となります。まず、ZOH 向けにモデルを構築します。

m6 = sest(dat2e,1,'Feedthrough',,,,false,“ inputdelay',,,,1,'Form',,,,'典范');idtf(m6)
ANS =从输入“ U1”到输出“ Y1”:0.1119 EXP(-1 * s) * ----------------S + 0.5607连续定时确定的传输函数。参数化:极点数:1零数:0免费系数的数量:2使用“ tfdata”,“ getpvec”,“ getCov”,“ getCov”,用于参数及其不确定性。状态:由IDSS模型转换创建。

推定モデル (m6)を実(m0)と比較します。

步骤(M6,M0)%与真系统进行比较

結果は良好に一致しています。ただし、入力に関するデータ オブジェクト情報を含めることができます。近似として、各サンプリングの瞬間の間は、区分的線形 (First-order-hold、FOH) として記述します。この情報は、正規のサンプリングの推定器で使われます。

dat2e.intersample ='foh'; m7 = ssest(dat2e,1,'Feedthrough',,,,false,“ inputdelay',,,,1,'Form',,,,'典范');% new estimation with correct intersample behavioridtf(m7)
ans = From input "u1" to output "y1": 0.09937 exp(-1*s) * ---------- s + 0.4957 Continuous-time identified transfer function. Parameterization: Number of poles: 1 Number of zeros: 0 Number of free coefficients: 2 Use "tfdata", "getpvec", "getcov" for parameters and their uncertainties. Status: Created by conversion from idss model.

もう一度ステップ応答の比較を見てください。

step(m7,m0)%与真系统进行比较

このモデル (m7)では,m6よりもかなり良好な結果が得られています。これでこの例は終了です。

bdclose('iddemsl1');bdclose('iddemsl3');