本案例展示,如何使用在线估计和数据自动分割技术进行系统行为的突变检测。本案例要求装有系统识别工具箱,不要求预测性维护工具箱
考虑一个传输延迟为1或2秒的线性系统。传输延迟指的是从输入到影响到输出测量结果所花费的时间。本案例中,将使用在线估计和数据分割的技术检测传输延迟的突变。系统测得的输入输出数据存储在pdmAbruptChangesData.mat
中
导入数据及绘图
传输延迟改变发生在大约20秒时,但在图上不易看出
使用一个多项式系数A,两个多项式系数B和一个延迟的ARX结构构建系统模型
y(t) + ay(t − 1) = b1u(t − 1) + b2u(t − 2)
此处A = [1 a],B = [0 b1 b2]
多项式系数B的首项为0,因为模型没有直接的输入。当系统动态变化时,三个系数a,b1,b2的值同样变化。当b1接近于0时,有效的传输延迟为2个样本,因为B多项式中前两个均为0。当b1变更大时,有效传输延迟变为1个样本
于是,为了检测传输延迟的变化,可以通过观察多项式系数B的变化实现
在线估计算法更新模型参数和状态估计,并当新数据可用时处于不断迭代的规律中。可以选择使用来自系统识别工具项库中的Simulink模块或直接在命令行上使用递归识别程序,如recursiveARX
。在线估计可以被用来建立随时间变化的动态模型如机械老化、气候模式改变或检测机电系统的故障
当估计器更新模型参数时,系统动态变化(延迟)将会被参数b1和b2大于平常的变化所指示。多项式系数B的变化用以下计算追踪:
L(t) = abs(B(t) − B(t − 1))
使用recursiveARX
对象在线估计ARX模型参数
指定NormalizedGradient
为递归估计算法,并且自适应增益为0.9
从iddata
对象z
中提取原始数据
使用动态线段画出参数估计值和L,并在估计前初始化这些动态线段。为模拟流数据,每次向估计器提供一个样本。在估计前初始化模型参数,随后进行在线估计
%% 初始化绘图
Colors = {'r','g','b'};
ax = gca;
cla(ax)
for k = 3:-1:1
h(k) = animatedline('Color',Colors{k}); % a,b1,b2参数的线段
end
h(4) = animatedline('Marker','.','Color',[0 0 0]); % line for L
legend({'a','b1','b2','Deviation'},'location','southeast')
title('ARX Recursive Parameter Estimation')
xlabel('Time (seconds)')
ylabel('Parameter value')
ax.XLim = [t(1),t(end)];
ax.YLim = [-2, 2];
grid on
box on
%% 进行迭代估计并展示结果
n0 = 6;
L = NaN(N,nk);
B_old = NaN(1,3);
for ct = 1:N
[A,B] = step(Estimator,Output(ct),Input(ct));
if ct>n0
L(ct) = norm(B-B_old);
B_old = B;
end
addpoints(h(1),t(ct),A(2))
addpoints(h(2),t(ct),B(2))
addpoints(h(3),t(ct),B(3))
addpoints(h(4),t(ct),L(ct))
pause(0.1)
end
前n0 = 6个数据样本不用了计算变化探测器L。在这区间内,参数变化是很大的,这归因于未知的初始化条件
通过使用信号处理工具箱中的findpeaks
命令,找到L上所有峰值的位置
最大峰值的位置与多项式系数B的最大改变位置相对应,即传输延迟改变的位置
相比于在线估计技术可以提供更多的估计方法和模型结构选择,数据分割方法可以帮助自动检测突变和孤立变化
数据分割算法自动将数据分割到不同动态行为区域内。这种方法对于捕捉源自失效或操作工况的改变引起的突变十分有用。segment
命令简化了单输出数据操作。当你不需要捕捉系统运行时的随时间变化行为时,segment
是一种备选的在线估计技术
数据分割技术的应用领域包括语音信号的分割(每个分割组代表一个音素),故障检测(每个分割组对应有或无故障的操作)和系统不同工作模式的估计
segment
命令的输入包括测量数据、模型阶数和影响系统噪声方差的猜想值r2。如果方差完全未知,那它可以被自动的估计出来。使用具有与在线估计相同阶数的ARX模型进行数据分割。将方差值设定为0.1
分割的方法基于多模型自适应遗忘AFMM(adaptive forgetting through multiple models)
多模型方法被用于追踪时间变化系统。最终的追踪模型是多模型的平均,并作为segment
和tvmod
的第三输出返回
下面画出追踪模型的参数
plot(tvmod)
legend({'a','b_1','b_2'},'Location','best')
xlabel('Samples'), ylabel('Parameter value')
title('Time-varying estimates')
注意这三条参数轨迹之间的相似性,它们都是用recursiveARX
估计得到的
segment
可使用tvmod
确定改变发生的时间点和q
,模型发生突变的概率。这些时间点通过应用对追踪模型使用平滑化过程,被用来构造分割后的模型
分割后的模型参数值返回到seg
中,segment
的第一个输出量。每个连续行中的值是基础分割模型在相应时刻的参数值,这些值在连续行中保持恒定,仅当系统动态属性发生改变时,这些值才会改变。即,seg
中的值是分段式恒定的
画出a,b1,b2的参数估计值
plot(seg)
title('Parameter value segments')
legend({'a','b1','b2'},'Location','best')
xlabel('Time (seconds)')
ylabel('Parameter value')
参数值的变化发生在第19个样本点附近。b1的值从小(接近于0)变大(接近于1).b2的值以相反的模式变化。这些在多项式参数B上发生的改变说明了传输延迟的变化
segment
的第二个输出参数V,表示分割模型的损失函数(例如对分割模型的估计预测差的方差)。可以使用V来评估分割模型的质量
注意分割算法最重要的两个输入是r2和q,segment
的第四个输出参数。在本案例中,q并未指定,因为使用其默认值0.01便可。更小的r2值和更大的q值会导致更多的分割点。为了找到合适的值,可以改变r2和q的值,并找到表现最好的那一组值。通常,相比于q,分割算法对r2的敏感度更高
本案例中,使用在线估计和数据分割技术的系统突变检测方法被评估。在线估计方法提供了更多的灵活性,并且可以对估计过程有更多的控制。然而,对突变或罕见的变化,segment
使得基于平滑的时变参数估计的自动检测技术变得容易