matlab中读取gpgga语句经纬度并在地球上作图的程序
时间: 2023-06-09 16:03:11 浏览: 239
matlab 解码 NMEA0183格式GGA数据
您好!非常感谢您的提问。以下是一个 Matlab 示例程序,可以读取 GPGGA 语句中的经纬度信息,并在地球上绘制相应的点:
```
% 读取 GPGGA 语句信息
fid = fopen('gps.txt','r');
data = textscan(fid,'%s','Delimiter','\n');
fclose(fid);
gpgga_idx = find(contains(data{1},'$GPGGA')); % 找到所有 GPGGA 语句
n_gpgga = length(gpgga_idx); % GPGGA 语句总数
lat = zeros(n_gpgga,1); % 存储纬度信息
lon = zeros(n_gpgga,1); % 存储经度信息
for i = 1:n_gpgga
% 从 GPGGA 语句中提取经纬度信息
gpgga_split = strsplit(data{1}{gpgga_idx(i)},',');
lat_tmp = str2double(gpgga_split{3})/100;
lat_dir = gpgga_split{4};
lat(i) = lat_tmp*180/200*(strcmp(lat_dir,'N')-strcmp(lat_dir,'S')); % 计算纬度
lon_tmp = str2double(gpgga_split{5})/100;
lon_dir = gpgga_split{6};
lon(i) = lon_tmp*180/200*(strcmp(lon_dir,'E')-strcmp(lon_dir,'W')); % 计算经度
end
% 绘制地球和 GPGGA 坐标点
figure;
[X,Y,Z] = sphere;
h = surfl(X,Y,Z); % 地球球面
set(h,'edgecolor','none','facecolor',[0.5,0.5,0.5],'facealpha',0.5); % 地球表面的颜色和透明度
hold on;
scatter3(lon,lat,ones(n_gpgga,1),10,'r','filled'); % GPGGA 坐标点
axis equal;
view([0,90]); % 俯视地球
```
需要注意的是,这个程序假设 GPGGA 语句的经纬度格式为“ddmm.mmmmm”,其中“dd”表示度数,“mm.mmmmm”表示度数的小数部分。另外,程序还需要在同一目录下准备一个名为“gps.txt”的文件,其中包含了所有的 GPGGA 语句信息。您可以自行修改程序代码以适用于您的应用场景。希望这个程序能够对您有所帮助!
阅读全文