% matlab mobile传感器数据,从手机导入到本地即可 clear;close all;clc; load('sensorlog_20230601_123433.mat'); lat = Position.latitude; lon = Position.longitude; altitude = Position.altitude; timestamp = Position.Timestamp; spd = Position.speed; nums = length(lat); nBins = 10; binSpacing = (max(spd) - min(spd))/nBins; binRanges = min(spd):binSpacing:max(spd)-binSpacing; % 添加下确界 binRanges(end+1) = inf; % |histc| 确定值落入哪一个bin [~, spdBins] = histc(spd, binRanges); lat = lat'; lon = lon'; spdBins = spdBins'; % 创建一个地理形状矢量,该矢量将线段存储为features s = geoshape(); for k = 1:nBins % 保留与当前bin匹配的经纬度,其余部分保留为NaN,NaN为线段中的中断 latValid = nan(1, length(lat)); latValid(spdBins==k) = lat(spdBins==k); lonValid = nan(1, length(lon)); lonValid(spdBins==k) = lon(spdBins==k); % 保留从当前速度bin转换到另一个速度bin后出现的经纬度使路径连续 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 wm = webmap('World Imagery'); mwLat = 26.053376; mwLon = 119.187501; name = 'School'; iconDir = fullfile(matlabroot,'toolbox','matlab','icons'); iconFilename = fullfile(iconDir, 'fzu.png'); wmmarker(mwLat, mwLon, 'FeatureName', name, 'Icon', iconFilename); colors = autumn(nBins); wmline(s, 'Color', colors, 'Width', 5); wmzoom(16);
时间: 2024-04-25 15:26:53 浏览: 128
这段代码是MATLAB代码,主要是对手机传感器数据进行处理,并将处理结果在地图上进行可视化。具体来说,代码的主要步骤如下:
1. 从.mat文件中加载传感器数据,包括经度、纬度、海拔、时间戳和速度等信息。
2. 将速度值分成10个区间(即10个速度bin),并将每个速度bin对应的经纬度信息存储到一个地理形状矢量中。
3. 使用WebMap工具箱创建一个地图窗口,并在地图上添加一个标记点(即指定坐标位置并添加一个图标)。
4. 将每个速度bin对应的经纬度线段在地图上显示出来,并使用不同的颜色进行区分。
总的来说,这段代码演示了如何使用MATLAB处理传感器数据,并将处理结果在地图上进行可视化,可以用于分析移动设备的行为轨迹以及移动性能等方面的研究。
阅读全文