前言:想要拟合飞行轨迹,百度了一下,高人介绍的都是什么百度地图API,无忧地图,PYTHON;不是不好,是尝试了一下,注册非常麻烦,结果没拟合出想要的轨迹;接着我们分享一下5行代码的MATLAB;
一.先看结果,再看过程
有些帖子看半天,结果发现不是自己想找的答案,给大家节约宝贵时间,点个赞!!!嘻嘻
二维——经纬拟合
三维——经纬高拟合
二.实现过程
1.下载飞行ulog文件;
2.将ulog文件转成csv:
将ulog文件单独放在一个文件夹中,在当前路径下执行指令:ulog2csv log_××××.ulg
3.找到需要的log_×××_gps_position_0.csv文件用于matlat分析
4.二维——经纬拟合Matlab代码如下
clear all
% close all
clc
[FileName PathName]=uigetfile({'log_48_2019-11-14-11-19-26_vehicle_gps_position_0.csv'},'');
file=fullfile(PathName,FileName);
fidID = fopen(file);
M=csvread(file,1,0);
x=M(:,3);%lon
y=M(:,1);%alt
z=M(:,4);%lat
%%%-----二维拟合--------%%%
plot(x,z);
5.三维——经和高度先拟合,纬度和高度拟合,再双双拟合,Matlab代码如下
clear all
% close all
clc
[FileName PathName]=uigetfile({'log_48_2019-11-14-11-19-26_vehicle_gps_position_0.csv'},'');
file=fullfile(PathName,FileName);
fidID = fopen(file);
M=csvread(file,1,0);
x=M(:,3);%lon
y=M(:,1);%alt
z=M(:,4);%lat
%%%-----二维拟合--------%%%
%plot(x,z);
%%%-----三维拟合--------%%%
p_yx = polyfit(y,x,4);
x_out = polyval(p_yx, y);
p_yz = polyfit(y,z,4);
z_out = polyval(p_yz, y);
plot3(x_out ,y, z_out, 'r*'); hold on;
% µÃ³öÇúÏߺ¯Êý x_out = f(z_out) z_out = f(y)
p_zx_out = polyfit(z_out,x_out,4);
x_out_f = polyval(p_zx_out,z_out);
plot3(x_out_f,y,z_out,'b*'); hold on;
大图:
gps数据:
本人原创不多,拿来分享,共同提高,不对请大神们批评指正,不胜感激!(完)