基于最大相关熵准则的非高斯噪声鲁棒滤波系统
项目简介
本项目实现了一套基于最大相关熵准则(Maximum Correntropy Criterion, MCC)的鲁棒滤波算法,专门用于解决在非高斯、重尾分布或含有脉冲噪声环境下,传统卡尔曼滤波性能下降的问题。项目在MATLAB环境中构建了一个包含复杂噪声建模、核心自适应滤波算法实现、标准算法对比以及多维度可视化分析的完整演示系统。
通过引入相关熵作为局部相似性度量,本系统能够有效地抑制量测数据中的异常值(Outliers),在脉冲噪声干扰严重的场景下展现出优于标准卡尔曼滤波(KF)的估计精度。
功能特性
- 复杂环境仿真建模:基于高斯混合模型(GMM)原理,模拟生成含有高强度脉冲噪声的非高斯观测数据,能够精确控制污染概率和异常值的方差放大倍数。
- 鲁棒核心算法实现:实现了基于定点迭代法(Fixed-Point Iteration)的最大相关熵卡尔曼滤波(MCKF),具备自适应调整测量噪声协方差的能力。
- 算法对比分析:同步运行标准卡尔曼滤波(KF)作为基准,通过均方根误差(RMSE)和平均绝对误差(MAE)量化对比两种算法在同一噪声序列下的性能。
- 多维可视化展示:提供二维轨迹跟踪对比、误差收敛曲线、以及基于核密度估计(KDE)的误差概率密度函数(PDF)分析图。
系统要求
- MATLAB R2016b 或更高版本
- Statistics and Machine Learning Toolbox(用于
mvnrnd 和 ksdensity 函数)
使用方法
直接运行主脚本即可启动仿真。程序将依照以下流程自动执行:
- 初始化系统参数与随机种子。
- 生成真实状态轨迹与对应的含噪观测数据。
- 并行执行 KF 和 MCKF 滤波解算。
- 在控制台输出 RMSE、MAE 及性能提升百分比报告。
- 弹出三个图形窗口展示轨迹、误差曲线及误差分布。
详细实现逻辑与算法分析
本项目仅包含一个核心脚本,内部逻辑分为三个主要阶段:
1. 系统建模与数据生成
- 运动模型:采用二维平面上的匀速运动模型(Constant Velocity, CV),状态向量包含 $[位置x, 速度x, 位置y, 速度y]$。
- 噪声模型:观测噪声设计为高斯混合模型(GMM)以模拟非高斯环境。
*
标称噪声:绝大多数数据(如85%)服从低方差的高斯分布。
*
脉冲噪声:少量数据(如15%)服从方差放大100倍的高斯分布,模拟传感器故障或环境干扰产生的离群点。
* 程序中通过随机概率判断逐点生成噪声数据,并记录异常值位置用于后续可视化标记。
2. 滤波器实现细节
#### 标准卡尔曼滤波 (Standard KF)
作为性能基准,严格按照卡尔曼滤波的“预测-更新”标准递归方程实现。在非高斯噪声下,由于其基于最小均方误差(MMSE)准则,对大幅度的量测离群点非常敏感,容易产生估计偏差。
#### 最大相关熵卡尔曼滤波 (MCKF)
这是本项目的核心算法,利用相关熵对误差的高阶矩进行约束。
- 定点迭代机制:在每个时间步的更新阶段,算法引入了一个内部迭代循环(Fixed-Point Iteration)。
- 高斯核函数:使用高斯核计算量测残差的“相关熵”。算法先对残差进行Cholesky分解标准化,然后映射到特征空间。
- 自适应权重:根据残差的大小计算权重。残差越大(即遇到脉冲噪声),计算出的权重越小。
- 协方差重构:利用计算出的权重动态修正等效测量噪声协方差矩阵(
R_effective)。当检测到异常值时,等效方差急剧增大,从而降低滤波器对该时刻观测值的信任度(增益 $K$ 减小)。 - 收敛判定:迭代过程通过检测状态估计的变化范数是否小于阈值(
1e-4)来自动终止。
3. 结果评估与可视化
代码在仿真结束后进行详细的指标计算和绘图:
* 计算全时段的位置均方根误差(RMSE)和平均绝对误差(MAE)。
* 计算MCKF相对于标准KF的性能提升百分比,并格式化打印到控制台。
*
轨迹对比图:在二维平面绘制真实轨迹、含噪观测点(绿色点)、异常值(洋红色叉号)、KF估计轨迹(蓝色虚线)和MCKF估计轨迹(红色实线)。直观展示MCKF在遇到异常值时保持轨迹平滑的能力。
*
误差分析图:包含两个子图。左图展示RMSE随时间的变化,验证收敛性;右图展示X轴方向的时间序列跟踪详情,对比两种算法对突变噪声的响应。
*
误差PDF分析图:利用
ksdensity 对位置误差进行核密度估计,绘制概率密度函数曲线。结果展示MCKF的误差分布更尖锐且集中于零均值,证明其更高的估计精度。