基于MATLAB的飞机航线轨迹预测与误差分析系统
项目简介
本项目是一个基于MATLAB开发的集成化仿真系统,旨在解决飞机航线轨迹的数据处理、数学建模、位置预测及误差评估问题。该系统通过生成带有噪声和异常值的模拟飞行数据,演示了从原始数据清洗到模型构建,再到未来轨迹外推预测的完整流程。项目结合了数值计算与三维可视化技术,能够直观地展示飞机的飞行态势,并量化评估预测模型的精度,非常适合作为相关专业(如航空航天、导航制导、数据科学)的毕业设计或课程设计参考。
主要功能特性
- 高仿真数据模拟:能够通过数学公式生成包含爬升、转向等非线性特征的真实轨迹,并自动叠加高斯测量噪声及人为异常离群点,模拟真实的传感器数据环境。
- 鲁棒的数据预处理:内置双重滤波机制,有效剔除信号中的突变异常值并平滑噪声,提升数据质量。
- 多项式轨迹建模:采用最小二乘法原理,针对经度、纬度、高度三个维度分别建立不同阶数的多项式模型,精准捕捉航线几何特征。
- 轨迹外推预测:基于历史数据构建的模型,对测试集时间段内的飞行位置进行外推,实现对未来航线的预测。
- 多维度误差分析:自动计算并输出均方根误差(RMSE)、平均绝对误差(MAE)及最大偏差,提供定量的精度评估报告。
- 交互式三维可视化:不仅提供经纬高分量的二维趋势图,还具备支持动态视角旋转的三维航线图和误差分布统计图。
系统要求
* MATLAB基础工具箱(即Base System)
* Signal Processing Toolbox(用于
medfilt1 等信号处理函数)
* Curve Fitting Toolbox(虽然主要使用基础fitting函数,但在扩展分析时推荐)
使用方法
- 确保MATLAB环境已按照上述要求配置完毕。
- 将所有脚本代码保存并在MATLAB中打开。
- 直接运行主函数(
main)。 - 系统将在命令窗口输出各阶段的处理状态(初始化、清洗、建模、预测、误差报告)。
- 程序运行结束后,将自动弹出三个可视化窗口:
*
飞机三维航线轨迹预测仿真:展示3D空间中的真实轨迹、历史观测点、拟合曲线和预测路径。
*
经纬度及高度分量预测分析:展示Lat/Lon/Alt随时间的变化趋势及切分点。
*
预测残差分析:展示误差直方图及MAE统计柱状图。
系统详细实现逻辑
本系统的核心逻辑完全包含在入口脚本中,并严格按照数据流向分为六个顺序执行的模块:
1. 数据模拟与获取
系统首先通过正弦、余弦及多项式函数生成一段长度为200个时间单位的标准 "真值" 轨迹,模拟飞机爬升并转向的过程。
- 噪声注入:为了贴近现实,在真值基础上叠加了高斯白噪声(Lat/Lon噪声水平为0.002度,Alt噪声水平为100米)。
- 异常点注入:在特定的时间点(如第50和120个采样点)人为制造大幅度的数据跳变,用于测试预处理模块的健壮性。
2. 数据预处理
在该阶段,系统调用内部子函数对原始含噪数据进行清洗,处理逻辑如下:
- 中值滤波(Median Filter):使用窗口大小为5的中值滤波器,专门用于识别并剔除人为注入的尖峰异常点。
- 移动平均平滑(Moving Average):在剔除异常点后,再次使用窗口为5的滑动平均算法对整体噪声进行平滑处理。
- 数据集划分:将清洗后的数据按时间顺序划分为两部分,前80%作为训练集(历史轨迹),后20%作为测试集(未来待预测轨迹)。
3. 轨迹拟合与建模
系统采用
多项式最小二乘法(Polynomial Least Squares) 对训练集数据进行拟合。针对不同维度的数据特征,选择了不同的多项式阶数:
- 经度与纬度:变化相对平缓,统一采用 3阶 多项式拟合。
- 高度:由于包含爬升及震荡特性,采用 4阶 多项式以获得更好的拟合优度。
4. 航线预测
利用上一步得到的模型系数,将测试集的时间序列作为输入,代入多项式方程进行计算。这一步本质上是模型的
外推(Extrapolation),生成从未见过的未来时间点的经纬度和高度预测值。
5. 误差分析
系统将预测得到的轨迹坐标与生成数据时的 "真值"(True Value,而非含噪观测值)进行从对比。计算指标包括:
- RMSE (均方根误差):衡量预测值与真值偏差的离散程度。
- MAE (平均绝对误差):衡量预测误差的实际平均水平。
- Max Error (最大偏差):评估最坏情况下的预测表现。
分析结果将直接打印在控制台表格中。
6. 可视化展示
该模块通过Matlab绘图引擎生成三组图表:
- 图1 (3D总览):使用
plot3 绘制。其中观测点用灰色散点表示,真值用绿色虚线表示,拟合线为蓝色,预测线为红色。并通过 view 函数设置了最佳观察视角,且添加了地面投影平面以增强空间感。 - 图2 (分量趋势):使用
subplot 将经、纬、高分开绘制。图中明确标注了"训练/测试"分割线,直观展示模型在切分点后的走势。 - 图3 (误差统计):使用
histogram 绘制误差分布直方图,判断误差是否服从正态分布;并使用 bar 图对比三个维度的平均误差。
关键算法与代码细节分析
预处理算法
代码中采用了
preprocess_data 子函数实现数据清洗。
- 核心函数:
medfilt1 和 smoothdata。 - 设计思路:先用中值滤波去除离群点(Outliers),因为均值类滤波器对离群点敏感;处理完离群点后,再用移动平均平滑高频噪声。这是一种经典的级联降噪策略。
建模算法
代码核心在于
polyfit 与
polyval 的配合使用。
p = polyfit(x, y, n):寻找一个n次多项式 $P(x)$,使得 $P(x(i)) - y(i)$ 的平方和最小。
- 阶数选择策略:代码中没有盲目选择高阶多项式,避免了龙格现象(Runge's phenomenon)导致的过拟合,特别是在经纬度这种变化相对线性的维度上保持了较低的阶数(3阶)。
误差计算逻辑
在
analyze_errors 函数中,误差被定义为 $Error = Prediction - True_Value$。
值得注意的是,代码在计算误差时,是将
预测值与
无噪声的真值进行对比,而不是与含噪的观测值对比。这体现了系统评估的是"还原真实轨迹的能力",而不仅仅是拟合观测数据的能力,评价标准更加科学和严谨。