主要内容

使用Simulink数据估计连续时间模型金宝app

这个例子说明了如何使用系统识别工具箱™识别在Simulink®中模拟的模型。金宝app该实例描述了如何处理连续时间系统和延迟,以及输入的样本间行为的重要性。

如果存在('start_金宝appsimulink''文件') ~ = 2 disp (“这个例子需要Simulink。”金宝app返回结尾

这个例子需要Simulink。金宝app

从Simulink模型中获取仿真数据金宝app

考虑由以下Simulink模型描述的系统:金宝app

open_system (“iddemsl1”)set_param(“iddemsl1 /随机数”“种子”'0'

红色部分是系统,蓝部件是控制器,参考信号是扫掠正弦曲线(啁啾信号)。数据采样时间设置为0.5秒。

该系统可以使用a表示idpoly结构体:

M0 = idpoly(1,0.1,1,1,[1 0.5],'ts'0,'inputdelay', 1“NoiseVariance”, 0.01)

让我们模拟模型iddemsl1.并保存数据中的数据iddata对象:

SIM(“iddemsl1”)DAT1E = IDDATA(Y,U,0.5);% IDDATA对象

让我们为验证目的进行第二次模拟模式。

set_param (“iddemsl1 /随机数”“种子”'13')sim(“iddemsl1”) dat1v = iddata(y,u,0.5);

让我们在第一次仿真期间获得的估计数据处有一个peek:

情节(dat1e)

使用模拟数据估算离散模型

让我们先评估一个默认顺序的离散模型,以初步了解数据特征:

m1 = n4sid(dat1e,'最好'%默认订单模型

检查模型复制验证数据的程度如何

比较(DAT1V,M1)

如图所示,模型预测了验证数据。要调查更多的数据特征,让我们检查使用的非参数脉冲响应dat1e在分析的负滞后自动确定:

ImpModel =冲动(dat1e [],“负面”);clf h = inhulssplot(Impmodel);展览(H,3)

IMPMODEL.是一个FIR模型,其顺序(编号。的系数)是自动确定的。我们也选择通过计算负延迟的脉冲响应来分析反馈效应。消极滞后的影响并非都是微不足道的。这是由于调节器(输出反馈)。这意味着脉冲响应估计不能用来确定时间延迟。相反,构建几个具有不同延迟的低阶arx模型,并找出最佳拟合:

V = arxstruc (dat1e dat1v struc (1:2, 1:2, 1:10));nn = selstruc (V, 0)延迟是nn的第三个要素

延迟确定为3次滞后。(这是正确的:1秒的死区时间给出了两个滞后延迟,ZOH阻挡另一个。)也可以计算相应的ARX模型,如下所示:

M2 = ARX(DAT1E,NN)比较(DAT1V,M1,M2);

炼制估计数

两个模型m1平方米在模拟中表现得同样。让我们现在尝试微调订单和延误。将延迟固定为2(耦合缺乏馈通提供3个样本的净延迟),并找到具有该延迟的默认订单状态空间模型:

m3 = n4sid(dat1e,'最好''inputdelay'2,“引线”,错误的);使用PEM预测误差最小化的%细化(也可以使用%| SSEST |)M3 = pem(dat1e, M3);

让我们看看估计的系统矩阵

M3.A.%模型的A-矩阵

系统自动选择了一个三阶动态模型,再加上两个“额外”时滞,得到了一个五阶状态空间模型。

始终建议不要盲目地依靠自动订单选择。它们受随机错误的影响。一个好方法是看着模特的零和杆,以及置信区:

CLF h = iopzplot(m3);showConfidence (h, 2)对应于2个标准偏差的%置信区

显然,单位圆圈的两个极/零似乎取消,表明第一阶动态可能就足够了。使用此信息,让我们进行新的一阶估计:

M4 = SSEST(DAT1E,1,“引线”假的,'inputdelay'2,'ts', dat1e.Ts);比较(dat1v m4, m3, m1)

相比绘图显示简单的第一阶模型m4给出了对数据的非常好的描述。因此,我们将作为最终结果选择此模型。

将离散模型转换为连续时间(LTI)

将此模型转换为连续时间,并以传输功能表格表示:

mc = d2c (m4);idtf (mc)

如上所示,系统已经得到了很好的描述。

直接估计连续时间模型

连续时间模型也可以直接估计。离散模型m4有2个样本输入延迟,表示1秒钟的延迟。我们使用党卫军此估计命令:

m5 = ss (dat1e 1“引线”假的,'inputdelay'1);礼物(m5)

不确定性分析

模型的参数m5即使模型适合数据87%,也表现出高度的不确定性。这是因为该模型使用的参数比绝对所需的参数导致参数估计中的唯一性丧失。要查看模型中不确定性的真实效果,有两种可能的方法:

  1. 将不确定性视为模型的响应而不是参数上的信心范围。

  2. 以规范形式估算模型。

让我们尝试两种方法。首先,我们以标准形式估计模型。

m5Canon = ss (dat1e 1“引线”假的,'inputdelay', 1“形式”'典范');礼物(m5Canon)

m5Canon使用模型的规范参数化。它适合估计数据与模型一样好m5。它显示了其参数值的小不确定性,提供了可靠性的证据。但是,正如我们所看到的那样m5在美国,巨大的不确定性并不一定意味着一个“坏”模式。为了确定这些模型的质量,让我们用3个标准差对应的置信区域来查看它们在时间和频率域的响应。我们也画出了原始系统m0比较。

Bode plot。

CLF opt = bodeoptions;opt.FreqScale ='线性';h = bodeplot (m0, m5, m5Canon选择);showConfidence (h, 3)传奇显示

这一步的阴谋。

clf showConfidence (stepplot (m0、m5 m5Canon), 3)传奇显示

这两个模型的不确定性界限实际上是相同的。我们可以类似地生成零点地图(iopzplot)和奈奎斯特图(nyquistplot.)这些模型的置信区。

IDTF(M5)

连续时间估计中的样本间行为

在比较从采样数据计算的连续时间模型时,重要的是考虑输入信号的帧群行为。在迄今为止的示例中,由于控制器中的零阶保持(ZOH)电路,输入到系统的输入是截面常数。现在删除此电路,并考虑真正连续的系统。输入和输出信号仍然采样2 Hz,其他所有内容是相同的:

open_system (“iddemsl3”)sim(“iddemsl3”) dat2e = iddata(y,u,0.5);

离散时间模型仍然可以很好地处理这些数据,因为当它们调整到测量值时,它们将包含采样属性和样本间输入行为(对于当前输入)。然而,在建立连续时间模型时,了解样本间的性质是必要的。首先建立一个模型,就像ZOH的情况:

M6 = SSEST(DAT2E,1,“引线”假的,'inputdelay', 1“形式”'典范');idtf (m6)

让我们比较估计的模型(m6)针对真实模型(m0):

步骤(m6,m0)%与真实系统相比

现在的协议不太好。但是,我们可以在数据对象中包含关于输入的信息。作为一种近似,让它被描述为采样瞬间之间的分段线性(一阶保持器,FOH)。然后估计员使用这些信息进行适当的抽样:

dat2e.intersample =.“呸”;m7 = ss (dat2e 1“引线”假的,'inputdelay', 1“形式”'典范');%新的估计与正确的样本间行为idtf (m7)

让我们再来看看阶跃响应的比较:

步骤(m7、m0)%与真实系统相比

这个模型(m7)提供比m6。这一例是这个例子。

bdclose(“iddemsl1”);bdclose(“iddemsl3”);