如何在Matlab中绘制GPS坐标

时间:2014-02-24 21:49:38

标签: matlab graph plot gps nmea

问题:如何使用散点图或地理图形函数(或任何最佳函数)绘制GPS经度和纬度坐标

大家好

我有这个GPS装置我想分析所以我出去测试它,得到几页NMEA句子(在同一个领域的3个不同的点)我喜欢用Matlab的散射函数(或geoshow)绘图功能......无论有效吗。

由于NMEA句子提供了大量我不需要的信息;我整理并简化了数据,只包含一个文件中的经度和另一个文件中的纬度(我有几个位置)。

我制作了两个文件.csv文件,所以我可以使用Matlab的csvread函数读取这些文件,而不必手动将这些数字输入到矩阵中。

我遇到的问题是,当我去绘制这些斑点时,我一次只能在1张图上显示1个斑点。这实际上违背了绘制坐标图的目的......我如何使用我制作的.csv文件或您知道的任何方法在同一图表上绘制所有3个点?

以下是我尝试过的内容:

 SW_latitude = csvread('SW_latitude.csv'); 
 SW_longitude = csvread('SW_longitude.csv');

 CENTER_latitude = csvread('center_latitude.csv'); 
 CENTER_longitude = csvread('center_longitude.csv');

 WALKING_latitude = csvread('WALKING_latitude.csv'); 
 WALKING_longitude = csvread('WALKING_longitude.csv');
 scatter(SW_latitude,SW_longitude) 
 hold on
 scatter(CENTER_latitude,CENTER_longitude)
 scatter(WALKING_latitude,WALKING_longitude)
 hold off

Screen shot of one coordinate being plotted...why only just 1 dot? I should see a scatter?

1 个答案:

答案 0 :(得分:2)

1)NMEA消息通常具有格式3246.4270,11704.3785等的经度和纬度。

小数点前的两个数字和后面的分数是分钟,前面的两个/三个数字是度数,即32度,46.4270分钟,117度,04.3785分钟等。你可以将这些转换为十进制度数加载(不需要三行,但希望这会使过程更加清晰):

degrees = floor(lat/100); % number of degrees
minutes = lat-degrees*100; % number of minutes
lat2 = degrees + minutes/60;

2)如果您的值都来自一个小区域,那么纬度和经度的变化就不会很大。因此,请注意您的轴限制。如果您知道要检查的大致范围,则可以在绘图后使用xlimylim进行设置。

3)有一个免费的地图工具箱,m_map,我非常喜欢。否则,如果使用geoshow,则可能必须将显示类型设置为Point。您也可以设置各种颜色/标记设置。在绘图时握住句柄,然后使用getset检查您可以调整的设置类型。

h = geoshow(lat, lon, 'DisplayType', 'Point')