来打开手机的定位功能。
Fig.4
3.
存储GPS数据
打开GPS 以后,此时数据并没有存储。在
MATLAB Mobile 的 Commands
界面中输入以下命令,如Fig.5 所示。Fig.5 中显示所存储的位置信息包括上面提到的纬度(Latitude)、经度(Longitude)、速度(Speed)、航向(Course)、水平精度(HorizontalAccuracy)等信息。
>>m.Logging
= 1;
Fig.5
也可以单击Fig.6 右上角的“START
SENDING” 开始存储数据:
Fig.6
4.
采集位置、速度信息
这里,我开车沿着小区附近转了一圈(带着手机和电脑),以采集速度和位置信息。数据采集完成后,在
MATLAB Mobile 的 Commands
界面中输入以下命令关闭数据存储功能和GPS:
Fig.7
5.
在电脑端提取刚才所采集到的数据
在 MATLAB Desktop Command
Window 中输入以下命令,提取m对象中的相关信息,包括纬度(lat)、经度(lon)、时间(t) 和速度(spd):
>>
[lat, lon, t, spd] = poslog(m);
此时,MATLAB
Desktop 的工作空间会有以下几个变量。我们刚才一共采集了489 个样本:
Fig.8
6.
在
MATLAB
Webmap 中展示所采集到的数据
%% Bin speeds into color
values
nBins = 10;
binSpacing = (max(spd) -
min(spd))/nBins;
binRanges =
min(spd):binSpacing:max(spd)-binSpacing;
binRanges(end+1) = inf;
[~, spdBins] = histc(spd,
binRanges);
%% Split latitude and longitude
data by speed
lat = lat';
lon = lon';
spdBins = spdBins';
s = geoshape();
for k = 1:nBins
latValid = nan(1, length(lat));
latValid(spdBins==k) = lat(spdBins==k);
lonValid = nan(1, length(lon));
lonValid(spdBins==k) =
lon(spdBins==k);
transitions = [diff(spdBins) 0];
insertionInd = find(spdBins==k & transitions~=0) +
1;
latSeg = zeros(1, length(latValid) +
length(insertionInd));
latSeg(insertionInd + (0:length(insertionInd)-1)) =
lat(insertionInd);
latSeg(~latSeg) = latValid;
lonSeg = zeros(1, length(lonValid) +
length(insertionInd));
lonSeg(insertionInd + (0:length(insertionInd)-1)) =
lon(insertionInd);
lonSeg(~lonSeg) = lonValid;
s(k) = geoshape(latSeg, lonSeg);
end
%% Create a web map and route
overlay
wm = webmap('Open Street
Map');
colors = autumn(nBins);
wmline(s, 'Color', colors, 'Width', 5);
wmzoom(16);
%% Clean up
clear m;
displayEndOfDemoMessage(mfilename)
最终的效果如Fig.9 所示。可以看出:除了一两个GPS信号点有漂移之外(漂移的信号可以用平滑算法处理掉),此次数据采集基本上还是比较成功的。
Fig.9
7.
参考资料:
(完)