玻璃管制造工艺
这个例子展示了玻璃管制造过程的线性模型识别。实验和数据讨论在:
V. Wertz, G. Bastin和M. Heet:玻璃管拉拔工作台的识别。第十届国际会计师联合会大会,第10卷,第334-339页,论文号14.5-5-2。1987年8月,慕尼黑。
该过程的输出是制造管的厚度和直径。输入的是管内气压和拉拔速度。
从输入速度到输出厚度的过程建模问题如下所述。讨论了分析数据和确定模型顺序的各种选项。
实验数据
首先加载输入和输出数据,保存为iddata对象:
负载thispe25.mat
数据包含在变量中玻璃
:
玻璃
玻璃= 2700个样本的时域数据集。采样时间:1秒输出单位(如指定)Thickn输入单位(如指定)速度
数据有一个输入(Speed)和一个输出(Thickn)的2700个样本。采样时间为1秒。
为了评估和交叉验证,将其分为两部分:
Ze =玻璃(1001:1500);%估计数据Zv =玻璃(1501:2000,:);%验证数据
估算数据的特写视图:
情节(泽(101:200))绘制样本101到200的估计数据。
数据初步分析
让我们去除平均值作为第一个预处理步骤:
Ze =趋势(Ze);Zv =趋势(Zv);
数据的采样时间为1秒,而处理时间常数可能要慢得多。我们可以在输出中检测到一些相当高的频率。为了确认这一点,让我们首先计算输入和输出光谱:
Sy = spa(ze(:,1,[]));Su = spa(ze(:,[],1));CLF谱(sy,su)轴([0.024 10 -5 20])图例({“输出”,“输入”})网格在
请注意,在1 rad/sec以上的输入相对能量非常小,而在该频率以上的输出包含相对较大的值。因此,有一些高频干扰可能会对模型的建立造成一些问题。
我们计算脉冲响应,使用部分数据来了解从输入到输出的潜在反馈和延迟:
Imp =冲量(ze,[],“负面”impulseestOptions (“RegularizationKernel”,“本身”));10:30 showConfidence (impulseplot (Imp), 3)网格在
我们在脉冲响应中看到了大约12个样本的延迟(置信区间外的第一个显著响应值),这是相当可观的。此外,脉冲响应对于负时滞也不是微不足道的。这表明数据中有很好的反馈概率,因此未来的输出值影响(添加到)当前的输入。输入延迟可以显式地用延迟
:
延迟(泽)
Ans = 12
反馈的概率可以用反馈
:
反馈(泽)%计算数据中的反馈概率
Ans = 100
因此,几乎可以肯定数据中存在反馈。
作为初步测试,我们还计算了光谱分析估计值:
G = spa(ze);showConfidence (bodeplot (g)网格在
我们注意到,除其他事项外,高频行为是相当不确定的。建议将模型范围限制为频率低于1 rad/s。
过程行为的参数化模型
让我们快速检查一下是否可以通过使用估计数据计算四阶ARX模型并使用验证数据模拟该模型来获得良好的动态。我们知道延迟大约是12秒。
M1 = arx(ze,[4 4 12]);比较(zv m1);
模拟结果近景图:
比较(zv, m1,正无穷,“样本”101:200)
处理输出的高频分量有明显的困难。这与长延迟相结合,表明我们将数据抽取4个(即低通滤波,每四个值选取一次):
如果存在(重新取样的,“文件”) = = 2如果信号处理工具箱(TM)使用“resample”命令抽取%可用。Zd = resample(趋向(玻璃),1,4,20);其他的否则,请使用慢速的“idresamp”。Zd = idresamp(趋势(玻璃),4);结束Zde = zd(1:500);ZDV = zd(501:size(zd,“N”));
让我们为抽取后的数据找到一个好的结构。首先计算脉冲响应:
Imp =冲量(zde);showConfidence(impulseplot(Imp,200),3)轴([0 100 -0.05 0.01])网格在
我们再次看到延迟大约是3个样本(这与我们上面看到的一致;12秒延迟,采样时间为4秒zde)。现在让我们尝试估计一个默认模型,其中的顺序由估计器自动选择。
Mdefault = n4sid(zde);比较(zdv Mdefault)
估计器选择了一个四阶模型。它似乎比未修饰的数据提供了更好的拟合。现在让我们系统地评估我们可以使用的模型结构和顺序。首先我们寻找延迟:
V = arxstruc(zde,zdv,struc(2,2,1:30));nn = selstruc(V,0)
nn =1×32 2 3
ARXSTRUC还提出了3个样本的延迟,这与脉冲响应的观测结果一致。因此,我们将延迟固定在3附近,并在这个延迟附近测试几个不同的阶数:
V = arxstruc (zde zdv struc(1:5, 1:5,神经网络(3)1:神经网络(3)+ 1));
现在我们调用selstruc
在返回的矩阵上,以选择最优先的模型顺序(最小损失函数,如V的第一行所示)。
nn = selstruc(V,0);选择“最佳”型号订单
SELSTRUC可以只使用一个输入调用顺序选择的交互模式(nn = selstruc(V)
).
让我们计算并检查模型中变量返回的“最佳”顺序神经网络
:
M2 = arx(zde,nn);比较(zdv, m2,正无穷,compareOptions (“样本”21:150));
该模型平方米
差不多和Mdefault
拟合数据,但使用较低阶。
让我们来测试残差:
渣油(zdv m2);
残差在置信区间内,表明模型已经捕捉到了基本动态。零点点图告诉我们什么?
clf showConfidence(iopzplot(m2),3) axis([-1.1898,1.3778,-1.5112,1.5688])
从零点点图中,有几对零点点消去的迹象。这是因为它们的位置在置信区域内重叠。这表明我们应该能够很好地处理低阶模型。尝试一个[1 1 3]ARX模型:
M3 = arx(zde,[1 1 3])
m3 =离散ARX模型:A(z)y(t) = B(z)u(t) + e(t) A(z) =1 - 0.115 z^-1 B(z) = -0.1788 z^-3采样时间:4秒参数化:多项式阶数:na=1 nb=1 nk=3自由系数数:2使用"polydata"、"getpvec"、"getcov"表示参数及其不确定性。状态:在时域数据“zde”上使用ARX估计。拟合估计数据:35.07%(预测焦点)FPE: 0.4437, MSE: 0.4384
模型仿真m3
对比验证数据显示:
比较(zdv Mdefault, m2, m3)
这三个模型提供了类似的结果。同样,我们可以比较模型提前5步的预测能力:
比较(zdv Mdefault, m2, m3, 5)
正如这些图所示,模型顺序的降低并不会显著降低其预测未来值的有效性。