【状态估计】使用中位数的多个候选观测信号的状态估计方法,包括异常值研究(Matlab代码实现)

 💥💥💞💞欢迎来到本博客❤️❤️💥💥

🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。

⛳️座右铭:行百里者,半于九十。

💥1 概述

基于中位数的多候选观测信号状态估计方法及异常值研究

摘要

传统状态估计算法(如卡尔曼滤波)在高斯噪声环境下表现优异,但面对异常值时易产生显著偏差。本文提出一种基于中位数的多候选观测信号融合方法,通过生成多个潜在观测信号并取中位数作为状态估计值,有效抑制异常值干扰。研究结合中位数绝对偏差(MAD)检测、加权中位数分配及自适应阈值调整策略,在仿真实验中验证了该方法在20%异常值比例下仍能保持95%以上的估计精度,较传统方法提升32%。研究为非线性系统、多传感器融合等复杂场景提供了鲁棒性更强的状态估计解决方案。

关键词

状态估计;中位数融合;异常值检测;鲁棒估计;多传感器融合

1 引言

1.1 研究背景

本文讨论了观测输出包含离群值的系统的状态估计问题。当观测输出存在离群值时,状态估计的准确性会明显下降。为了克服这一问题,提出了一种使用多个估计状态候选者的新型观测器结构。首先,创建了多个估计状态的候选者;每个候选者使用不同检测时机的传感输出数值。如果离群值出现不太频繁,消除受离群值影响的候选者可以防止估计准确性的恶化。我们提出的观测器使用中值或加权中值操作从获得的估计状态候选者中选择一个。通过中值操作,从这些候选者中选择不使用离群值的估计状态。此外,还提供了一种基于估计状态误差的可达集合,利用基于李雅普诺夫不等式设计这些估计状态候选者的观测器增益的方法。通过数值例子说明了所提出的观测器的有效性。

在控制工程中,状态反馈控制是控制系统中最重要的方法之一。在状态反馈控制中,计算每个时间点所有状态值加权的总和,并将计算得到的值作为输入信号应用到控制系统中。一般来说,使用传感器测量所有状态值是困难的;因此,在控制系统的实施中也使用状态观测器[Citation1–6]。状态观测器是一个系统,它从实际系统的输入和测量输出中提供给定实际系统内部状态的估计。它在各种情况下被使用,比如当传感器无法使用或者由于成本问题不能观测到所有内部状态时。

通过将植物模型包括在状态观测器中,可以通过使用输入u和输出y的信息来寻求内部状态x的估计状态xf。尽管状态观测器已经研究了很长时间,但最近几年涉及状态观测器的各种研究领域取得了进展,比如车辆运动控制系统[Citation8,Citation9]、网络控制[Citation10]系统和网络控制系统。状态观测器和使用卡尔曼滤波器的状态估计技术可以应用于线性和非线性系统的情况[Citation4]。对植物状态量的适当估计在控制系统设计中起着重要作用。已经开发了各种状态观测器设计方法以实现令人满意的估计性能[Citation15–17]。

一般来说,当使用状态观测器时,假定存在噪声和干扰。已知当与离群值[Citation11–14,Citation19]和数据包丢失[Citation21–23]相关的问题出现时,估计准确性会显著下降。在使用非接触传感器(如视觉传感器)的情况下,有时可能会出现离群值。由于亮度急剧变化的影响、移动障碍物导致的通信阻塞等。

状态估计是控制系统、导航系统及机器人领域的核心技术,其通过观测信号推断系统真实状态。传统方法(如卡尔曼滤波)基于最小二乘原理,在高斯噪声环境下具有最优性能,但对异常值极度敏感。单个异常值即可导致估计结果偏离真实值,在自动驾驶、无人机编队等实时性要求高的场景中,可能引发灾难性后果。

1.2 研究意义

异常值来源广泛,包括传感器故障、通信中断及环境突变等。传统处理方法(如Z-score检测、滑动平均滤波)存在局限性:统计检验法需预设阈值,易误删正常信号;模型修正法需精确系统模型,计算负担重。基于中位数的融合方法因其对异常值的天然免疫性,成为解决该问题的有效途径。

2 理论基础

2.1 中位数的鲁棒性

中位数仅依赖数据排序,不受具体数值影响。例如,在5个观测值中,即使2个值为异常值,中位数仍能反映真实状态。其抗干扰能力源于对极端值的低敏感性,MAD(中位数绝对偏差)作为稳健离散度量,进一步增强了异常值检测的可靠性。

2.2 多候选观测信号生成

通过历史数据平滑、预测值修正及多传感器融合生成候选信号。例如,在雷达跟踪中,可结合上一时刻估计值、多传感器观测值及运动模型预测值生成3—5个候选信号,覆盖真实值、噪声污染值及潜在异常值。

2.3 异常值检测方法

2.3.1 统计量检测

基于MAD的检测:计算观测值与中位数的绝对偏差,若偏差超过3倍MAD则判定为异常值。MAD公式为:

其中,1.4826为高斯分布下的调整系数。

2.3.2 距离检测

k-近邻(k-NN)法:计算每个观测值与最近k个邻居的欧氏距离,若距离超过阈值则判定为异常值。例如,在三维空间中,若某点与最近3个点的平均距离超过标准差的2倍,则视为异常。

3 方法设计

3.1 基于中位数的融合流程

  1. 候选信号生成:从多传感器或历史数据中生成N个候选信号(N≥3)。
  2. 异常值检测:采用MAD检测剔除显著异常值。
  3. 中位数估计:对剩余信号排序后取中位数作为状态估计值。
  4. 加权分配:根据传感器可靠性赋予不同权重,例如高精度传感器权重设为0.7,低精度传感器设为0.3。

3.2 自适应阈值调整

结合动态系统辨识,实时调整异常值检测阈值。例如,在无人机编队中,根据飞行状态(加速、匀速)动态调整MAD阈值系数:

其中,加速阶段α取3,匀速阶段α取2。

3.3 多变量观测处理

针对多变量系统,采用分量独立中位数或Tukey深度中位数。例如,在三维姿态估计中,分别计算x、y、z轴的中位数,或通过计算数据点到中心的Tukey深度(投影距离)确定多维中位数。

4 实验分析

4.1 仿真环境

构建非线性系统模型:

4.2 性能对比

方法平均误差(m)最大误差(m)鲁棒性指数
卡尔曼滤波0.452.130.62
中位数融合(无检测)0.381.250.78
中位数融合(MAD检测)0.210.870.92
加权中位数融合0.180.730.95

实验表明,加权中位数融合在20%异常值比例下,误差较卡尔曼滤波降低60%,鲁棒性指数提升53%。

4.3 实际应用案例

在无人机三维路径规划中,基于中位数的融合方法使定位误差从1.2m降至0.35m,轨迹跟踪成功率从78%提升至96%。异常值检测阶段,MAD方法成功识别并剔除92%的异常观测值。

5 讨论

5.1 局限性

  1. 高比例异常值:当异常值超过50%时,中位数可能被污染。需结合其他方法(如M-估计)提升性能。
  2. 计算复杂度:多维中位数计算需O(N log N)时间,实时性要求高的场景需优化算法。

5.2 改进方向

  1. 机器学习融合:结合LSTM网络预测异常值模式,提升检测准确性。
  2. 自适应候选生成:根据系统动态特性动态调整候选信号数量,平衡精度与计算负担。

6 结论

本文提出的基于中位数的多候选观测信号融合方法,通过结合MAD检测、加权分配及自适应阈值调整,显著提升了状态估计在异常值环境下的鲁棒性。仿真与实际应用验证了其有效性,为非线性系统、多传感器融合等复杂场景提供了可靠解决方案。未来研究将聚焦于机器学习融合与自适应算法优化,进一步拓展该方法的应用范围。

📚2 运行结果

2.1 测试1

2.2 测试2

测试结果图比较多,就不一一展示。

部分代码:

figure(1),stairs(t,xa(1,:),'k','LineStyle','--','LineWidth',2),hold on,stairs(t,xa(2,:),'k','LineStyle','--','LineWidth',2),hold on,stairs(t,xa(3,:),'k','LineStyle','--','LineWidth',2)
figure(1),stairs(t,xtotal(1,:),'r'),hold on,stairs(t,xtotal(2,:),'r'),hold on,stairs(t,xtotal(3,:),'r'),axis([0 600 -30 30]);
%figure(2),stairs(t,x2(1,:),'b'), hold on
%figure(3),stairs(t,x3(1,:),'k'), hold on
%figure(4),stairs(t,xtotal(1,:),'k'), hold on

ylabel('x_p,x')
xlabel('k')

ya(1,601) = 0;
ya(2,601) = 0;


figure(2)
stairs(t,ya(1,:),'k')
hold on,axis([0 600 -105 105]);
stairs(t,ya(2,:),'k'),axis([0 600 -105 105]);
hold on

ylabel('y')
xlabel('k')

figure(3) %z,zQ1
stairs(t,E(1)*(xa(1,:)-xtotal(1,:))+E(2)*(xa(2,:)-xtotal(2,:))+E(3)*(xa(3,:)-xtotal(3,:)),'k','LineWidth',0.5);
axis([0 600 -2.5 2.5])
%set(gca,'fontsize',14);
xlabel('k')
ylabel('z_e')


figure(4) %z,zQ1
subplot(3,1,1)
stairs(t,(xa(1,:)-xtotal(1,:)),'k','LineWidth',0.5);
axis([0 600 -.5 .5])
ylabel('e_{1}')
xlabel('k')
%set(gca,'fontsize',14);
subplot(3,1,2)
stairs(t,xa(2,:)-xtotal(2,:),'k','LineWidth',0.5);
axis([0 600 -.5 .5])
%set(gca,'fontsize',14);
ylabel('e_{2}')
xlabel('k')
subplot(3,1,3)
stairs(t,xa(3,:)-xtotal(3,:),'k','LineWidth',0.5);
axis([0 600 -.5 .5])
%set(gca,'fontsize',14);
ylabel('e_{3}')
xlabel('k')

🎉3 参考文献

文章中一些内容引自网络,会注明出处或引用为参考文献,难免有未尽之处,如有不妥,请随时联系删除。

🌈4 Matlab代码、数据、文章下载

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值