主要内容

使用Simulink数据估算连续时间模型万博1manbetx

该示例说明了如何使用System Idection Toolbox™识别Simulink®中模拟模万博1manbetx型。该示例描述了如何处理连续时间系统和延迟,以及输入的输入行为的重要性。

如果存在(“start_万博1manbetxsimulink”,“文件”)〜= 2 disp('此示例需要Simulink。'万博1manbetx)返回结束

此示例需要Simulink。万博1manbetx

从Simulink模型获取模拟数据万博1manbetx

考虑以下Simulink模型所描述的系统:万博1manbetx

Open_System('iddemsl1')设置参数('iddemsl1 /随机数','种子','0')

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

这个系统可以用Idpoly.结构:

m0 = iDpoly(1,0.1,1,1,[1 0.5],“t”,0,“输入延迟”,1,'noisevariance',0.01)

让我们模拟这个模型iddemsl1并将数据保存在iddata.目的:

模拟('iddemsl1')dat1e=iddata(y,u,0.5);%iddata对象

为了验证,让我们对模式进行第二次模拟。

set_param('iddemsl1 /随机数','种子','13')模拟('iddemsl1')DAT1V = IDDATA(Y,U,0.5);

让我们看一下在第一次模拟期间获得的估算数据:

情节(DAT1E)

利用仿真数据估计离散模型

让我们首先评估默认订单离散模型,以获得一些初步了解数据特征:

m1=n4sid(dat1e,“最好的”)%默认订单模型

检查模型复制验证数据的效果

比较(dat1v,m1)

正如所观察到的,该模型对验证数据进行了很好的预测。为了更深入地研究数据特征,让我们检查使用dat1e.如果自动确定分析的负滞后:

ImpModel = Impulseest(DAT1E,[],'消极的')clf h=脉冲批(IMP模型);显示置信度(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);

改进估计

这两种模型M1M2在模拟中的行为类似。现在让我们尝试微调顺序和延迟。将延迟固定为2(加上缺少馈通,会产生3个样本的净延迟),并找到具有该延迟的默认顺序状态空间模型:

m3 = n4sid (dat1e,“最好的”,“输入延迟”2,'喂养'、假);%精确的预测误差最小化使用pem(也可以使用% |学生|)M3 = PEM(DAT1E,M3);

看看估计的系统矩阵

m3.a%结果模型的A矩阵

自动选择三阶动态,其中与2个“额外”延迟一起提供第5阶规模空间模型。

始终建议不要盲目依赖自动顺序选择。它们受到随机错误的影响。一个好方法是查看模型的零点和极点以及置信区域:

clf h = iopzplot(m3);展示(H,2)%2个标准差对应的置信域

显然,单位圆上的两个极点/零点似乎相互抵消,这表明一阶动力学可能就足够了。利用这一信息,让我们做一个新的一阶估计:

m4=ssest(dat1e,1,'喂养',错误的,“输入延迟”2,“t”,dat1e.ts);比较(DAT1V,M4,M3,M1)

这个比较图中显示了简单的一阶模型M4对数据进行了很好的描述。因此,我们将选择此模型作为最终结果。

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

将该模型转换为连续时间,用传递函数形式表示:

MC = D2C(M4);IDTF(MC)

如上所示,已经获得了对系统的良好描述。

直接估算连续时间模型

也可以直接估计连续时间模型。离散模型M4有2个样本输入延迟,代表1秒延迟SSEST.用于此估算的命令:

M5 = SSEST(DAT1E,1,'喂养',错误的,“输入延迟”,1);目前(M5)

不确定性分析

模型参数M5即使模型符合87%的数据,也表现出高度的不确定性。这是因为模型使用的参数超过绝对要求,导致参数估计失去唯一性。要查看模型中不确定性的真实影响,有两种可能的方法:

  1. 将不确定性视为模型响应的置信边界,而不是参数。

  2. 以标准形式估计模型。

让使用两种方法。首先,我们以规范形式估计模型。

m5canon = ssest(dat1e,1,'喂养',错误的,“输入延迟”,1,'形式',“规范的”);目前(M5Canon)

m5canon.使用模型的标准参数化。它与模型一样适合估计数据M5。它显示了其参数值的小不确定性,从而证明了其可靠性。然而,正如我们所看到的M5,一个大的不确定性并不一定意味着“坏”模型。为了确定这些模型的质量,让我们使用对应于3个标准偏差的置信区的时间和频率域中的响应。我们还绘制了原始系统M0.作为比较。

波特阴谋。

CLF选择= BodeOptions;opt.freqscale =“线性”;h =围裙(M0,M5,M5CANON,OPT);展览(H,3)传奇显示

步骤图。

CLF ShowConfidence(Stepplot(M0,M5,M5canon),3)传奇显示

这两个模型的不确定性范围几乎是相同的。我们可以类似地生成极零地图(Iopzplot.)和nyquist plot(奈奎斯特普洛特)具有这些模型的置信域。

idtf(m5)

连续时间估计中的狭义行为核对

在比较从采样数据计算的连续时间模型时,重要的是要考虑输入信号的采样间行为。在到目前为止的示例中,由于零阶保持(zoh),系统的输入是分段常数控制器中的电路。现在拆下此电路,并考虑一个真正连续的系统。输入和输出信号仍然以2 Hz的频率采样,其他一切都相同:

Open_System('iddemsl3')模拟('iddemsl3')dat2e = iddata(y,u,0.5);

离散时间模型仍然可以很好地对这些数据进行良好,因为当它们调整到测量时,它们将包含采样属性,并且输入行为(用于当前输入)。但是,在构建连续时间模型时,了解帧群属性至关重要。首先为ZOH案例构建模型:

m6=ssest(dat2e,1,'喂养',错误的,“输入延迟”,1,'形式',“规范的”);IDTF(M6)

让我们比较一下估计的模型(M6)与真实模型相反(M0.):

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

协议现在不太好。但是,我们可以包括有关输入的数据对象信息。作为近似,可以将其描述为采样瞬间之间的分段线性(首级保持,FOH)。然后由估算器使用此信息进行适当的采样:

dat2e.样本间='foh';M7 = SSEST(DAT2E,1,'喂养',错误的,“输入延迟”,1,'形式',“规范的”);%新估计具有正确的帧群行为IDTF(M7)

让我们再次查看阶段响应比较:

步骤(m7,m0)%与真实系统比较

这个模型(M7)结果比以前好得多M6.这个例子到此结束。

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