此示例显示了如何在Web地图上绘制旅程的路由和速度使用android™设备上的Mat文件记录。GPS坐标在MAT文件中收集并用于绘制路线和速度。
金宝appSimul金宝appink®Support Package for Android™Devices支持在Android™设备上以MAT-file格式记录来自Simulink®模型的信号。mat文件日志使您能够监视信号的行为,并对历史数据进行分析。
要演示在Android™设备上登录的Mat文件记录,此示例使用androidmatfile.金宝appSimulink®模型。此模型在多个MAT文件中记录Android™设备上的GPS(纬度和经度)坐标。然后,您可以将MAT文件导入计算机并使用文件在MATLAB®中进行进一步分析。在此示例中,MAT文件用于绘制Web地图上旅程的路由和速度。地图上的折线代表了路线。折线的颜色代表速度。
在你开始这个例子之前,我们建议你阅读:
要运行此示例,请下载并安装:
映射工具箱™(用于MATLAB®地图显示)
Android™设备
USB电缆
笔记在继续此步骤之前,您必须安装Android™设备的Simulink®支持包,如金宝app金宝app安装支持Andr金宝appoid设备.
1。打开androidmatfile.模型。
2。在这一点建模工具条的选项卡,选择模型设置.
3。在“配置参数”对话框中,选择硬件实现.验证硬件板参数设置为Android设备
.
4.来自团体列表目标硬件资源, 选择设备的选择.
5。来自设备列表,选择您的Android设备。如果您的设备不在列表中,单击刷新.
笔记:如果您的设备没有列出,即使点击后刷新,确保您已启用USB调试选择您的设备。要启用USB调试, 进入androidhwsetup
在MATLAB®命令窗口中,按照屏幕上的说明进行操作。
1。在“配置参数”对话框中,浏览到代码生成>界面>高级参数并验证以下设置:
一个。这MAT文件日志记录选项已选择。
湾这mat文件变量名修饰符列表设置为rt_
.使用此列表,您可以指定IFrt_
将作为前缀或后缀添加到mat文件中的变量名中。要使用变量名而不进行任何修改,请选择没有一个
.
2。点击申请保存更改,然后单击好吧.
1。在Simuli金宝appnk®模型中,双击到工作空间
块,纬度工作区
和经度的工作区
.验证这些参数值:
参数|价值|描述 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ __ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _变量名称纬度(纬度工作区块)|纬度和经度的变量名称|经度(在经度工作空间块中)|坐标将在MAT文件中登录。将数据点限制为最后的|500 | The number of coordinates to be logged in the MAT-file. Save format | Structure With Time | Save data as a structure with associated time information.
2。点击申请保存更改,然后单击好吧.
笔记在你进行这一步之前,
您必须具有Simulink Co金宝appder™许可证。
确保这一点位置设置打开您的Android™设备。
1。在Simuli金宝appnk®型号工具栏上,模拟停止时间参数指定坐标在MAT文件中记录的持续时间。例如,如果模拟停止时间参数是10.0
秒,坐标记录10.0秒,然后停止记录。然而,该模型将持续运行一段不确定的时间。在本例中,模拟停止时间指定为正
,表示将无限期地记录坐标。
2。在这一点硬件选项卡中的金宝app模式部分,选择跑在船上然后点击构建,部署和启动.此操作将在Android™设备上构建并下载模型。成功部署后,应用程序开始在设备上运行,并在mat -文件中记录经纬度坐标。
3。手持设备行走。确保您至少在模拟停止时间参数指定的持续时间内行走。
1。通过在MATLAB®命令窗口中输入以下命令,将Android™设备中的mat文件复制到MATLAB®中:
[<变量1>,<变量2>] = codertarget.android.internal.getfiles('')
变量1
是一个MATLAB®变量,用于显示复制操作的状态。变量2.
显示mat文件的列表复制到MATLAB®。在不成功的复制操作中,变量2.
显示错误信息。
例如,
[结果,matfiles] = codertarget.android.internal.getfiles('androidmatfile')
结果=
0.
matfiles =
'成功从设备中拉出以下文件:androidMatFile_1_1。垫androidMatFile_1_2。垫androidMatFile_1_3。垫androidMatFile_1_4。垫androidMatFile_1_5。垫androidMatFile_1_6。垫androidMatFile_1_7。垫androidMatFile_1_8。垫的
成功复制文件后,结果
变量就0.
.这matFiles
变量显示复制到MATLAB®的MAT文件的名称。您还可以在MATLAB®当前文件夹窗口中看到复制的文件。
如果MATLAB®在复制文件时遇到任何问题,则结果
变量更改为非零值。这matFiles
变量显示相应的错误消息。
2。将所有MAT文件组合到单个MAT文件中Android_MAT_stitcher
命令。该命令将当前目录中以相同名称开始的所有mat文件组合成一个文件。拼接的顺序基于在文件名末尾找到的数字字符。缝合文件的名字以__stitched.mat.
.
笔记:一个预加载的缝合文件可供您使用。要使用预加载的文件,请按照本节的下一步所述直接加载文件。
Android_MAT_stitcher (dir (' * .mat '));
有关Stitcher命令的信息,请输入编辑('android_mat_stecer.m');
.
3。加载缝合的垫文件。
负载(' < stitchedMATfile >”);
例如,
负载(“androidMatFile_1__stitched.mat”);
4.要查看记录的纬度和经度坐标,请双击rt_latitude
和rt_longitude
变量在工作空间窗户。
1。给MATLAB®变量赋坐标值。
lat = rt_lattitude.signals.values;lon = rt_longitude.signals.values;
2。计算你的旅行速度。
l =长度(lat);半径= 6371.00;时间= 1;社民党= 0 (l, 1);for t= 1:l if t>1 oldLat = lat(t);oldlon =朗(t);newLat =纬度(t - 1);newLon =朗(t - 1);dLat =函数(newLat-oldLat);dLon = deg2rad(newLon- oldlon); a = sin(dLat/2) * sin(dLat/2) + ... cos(deg2rad(oldLat)) *cos(deg2rad(newLat)) * ... sin(dLon/2) * sin(dLon/2); c = 2 * asin(sqrt(a)); spd(t) = (6371.00 * c*1609.00 *60)/1000; else spd(t) = 0; end end
若要用离散的颜色表示速度,请将速度值装入箱中。
nBins = 10;binSpacing = (max(spd) - min(spd))/ bins;binRanges = min (spd): binSpacing:马克斯(spd) -binSpacing;
要包含最后一个bin上面的值,请在binRanges中添加inf。binRanges结束(+ 1)=正;
%|histc|确定每个速度值的bin。[~, spdBins] = histc(spd, binRanges);
笔记:在继续此步骤之前,必须具有Mapping Toolbox™许可证。
MATLAB®为每个速度仓创建不连续线段。每个片段都被赋予相同的颜色。这样创建的总线段要比将每个相邻的纬度和经度值作为各自的线段处理少得多。
使用该段的地理向量特征使用Geohape.
命令。
Spdbins =斯巴斯宾';
%创建一个空的geoshape矢量s = geoshape();
对于k = 1: bins
%只存储与当前bin匹配的lat和lon值。将%不匹配的值指定为NaN。NaN被解释为线段中的断点。latValid = nan(1, length(lat));latValid (spdBins = = k) =纬度(spdBins = = k);
lonValid = nan(1, length(lon)); / /长度lonValid (spdBins = = k) =朗(spdBins = = k);
对于连续路径,存储从当前速度库转换到下一个速度库后的lat和lon值。= [diff(spdBins) 0];insertionInd = find(spdBins==k & transitions~=0) + 1;
%预分配空间并插入额外的lat和lon值。latSeg = 0 (1, length(latValid) + length(insertionInd));latSeg(insertionInd + (0:length(insertionInd)-1)) = lat(insertionInd);latSeg (~ latSeg) = latValid;
lonSeg = 0(1,长度(lonValid) +长度(insertionInd));lonSeg(insertionInd + (0:length(insertionInd)-1)) = lon(insertionInd);lonSeg (~ lonSeg) = lonValid;
将lat和lon值赋给地理形状向量。s(k) = geoshape(latSeg, lonSeg);
结束
1。在浏览器中打开一个Web映射。
wm = webmap('公开街道地图');
2。在地图上,标出你当前的位置作为参考。在本例中,印度班加罗尔MathWorks®办公室被标记。
mwlat = 12.9434;mwlon = 77.6914;name ='mathworks';iCondir = fullfile(matlabroot,'toolbox','matlab','图标');iconfilename = fullfile(iCondir,'matlabicon.gif');wmmarker(mwlat,mwlon,'featureName',name,'图标',iconfilename);
3。用不同颜色表示每个速度箱
命令。该命令创建一个nBins3数组。数组中的每一行都包含代表每个容器的颜色的红色、绿色和蓝色强度。秋天
颜色=秋天(NBINS);
4.使用绘制Web地图上的线覆盖WMLINE.
命令。地图提供了路线的视觉表示和旅程的速度。折线代表该途径。折线的颜色代表了旅程的速度。
wmline(s, 'Color', colors, 'Width', 5);
5。若要控制web地图的缩放级别,请使用wmzoom
命令。
wmzoom (16);