主要内容

getMapData

从地图层检索数据

描述

例子

mapData= getMapData (地图返回一个包含给定映射层的所有数据的值矩阵地图

mapData= getMapData (地图xy返回给定值的数组xy-世界坐标中的位置。

mapData= getMapData (地图xy“本地”)返回给定值的数组xy-在局部坐标中的位置。

mapData= getMapData (地图ij“网格”)返回给定值的数组ij-在网格坐标中的位置。每一行的ij引用网格单元索引我[j]

mapData发边线球的) = getMapData (___还返回一个逻辑值向量,指示是否对应的输入位置xyij使用前面的语法是有效的。

mapData= getMapData (地图bottomLeftmapSize返回地图层的子区域的值矩阵,地图.分区域从左下角开始xy-安置bottomLeft在给定地图大小的世界坐标中mapSize指定为(宽高)在米。

mapData= getMapData (地图bottomLeftmapSize“本地”)在局部坐标中指定子区域的左下角。

mapData= getMapData (地图topLeftgridSize“网格”)以网格坐标指定子区域的左上角。分区大小,gridSize也是在网格坐标中给出的(行峡路)

例子

全部折叠

创建一个地图层,每个网格位置存储两个值为xy速度。

创建一个——- - - - - -n矩阵的值。第三维的第一个元素是dx第二个是dy随着速度

dXY =重塑(1∶10,20);dXY (:: 2) = dXY;

从矩阵中创建一个地图层。指定分辨率和层名。

vLayer = mapLayer(依据“决议”, 1“LayerName”“依据”);

将所有的地图数据以矩阵的形式输出。通过创建包含最小值和最大值的数组来获取速度值的xy-locationxy-世界限制,并转移到网格中心位置。的y-location在转换矩阵到世界坐标时被翻转。可视化对应于网格中心位置的速度箭袋函数。

v = getMapData (vLayer);R = 1 / (2 * vLayer.Resolution);xLim = vLayer.XWorldLimits;yLim = vLayer.YWorldLimits;xLoc = (xLim (1) + R): R * 2: (xLim (2) - R);yLoc = (yLim (2) - R): - R * 2: (yLim (1) + R);箭袋(xLoc yLoc, v (:,: 1), v (:,: 2))

图中包含一个轴对象。轴对象包含一个类型为箭筒的对象。

将左下角象限设置为新更新的值。将这些值创建为一个矩阵,并在映射坐标中指定左下角(0,0)setData函数。

updateValues = repmat(重塑([-50,100],[1 1 2]),5,10);setMapData(vLayer,[0 0],updateValues) v = getMapData(vLayer);箭袋(xLoc yLoc, v (:,: 1), v (:,: 2))

图中包含一个轴对象。轴对象包含一个类型为箭筒的对象。

使用网格坐标为左上角象限设置新值。对于地图,左上角的网格位置是(1,1)。

setMapData (vLayer [1], updateValues,“网格”) v = getMapData(vLayer);箭袋(xLoc yLoc, v (:,: 1), v (:,: 2))

图中包含一个轴对象。轴对象包含一个类型为箭筒的对象。

mapLayer对象使您能够在设置和获取映射中的数据时应用自定义元素转换。要转换从映射中设置或获取的数据,请指定函数句柄GetTransfomFcnSetTransformFcn属性。这个例子展示了如何通过为概率值和概率值创建一个查找表来实现一个概率概率映射层。在设置或获取数据时,转换函数使用这些查找表在这些值之间进行转换。

创建查找表

生成一个完整的值查找表,该值将概率值映射到的最小和最大限制int16值。

创建一个数组int16值从intminintmax.定义概率极限。

intType =“int16”;intLinSpace = intmin (intType): intmax (intType);numOfPoints =长度(intLinSpace);probLimits = [0.001 .999];

exampleHelperProbToLogoddsexamplerHelperLogoddsToProb函数在对数概率和概率值之间转换。使用helper函数获取日志概率限制并生成用于查找日志概率值的数组。为整个查找表创建内插网格。

logOddsLimits = exampleHelperProbToLogodds([0.001 .999]);logOddsLookup =单(exampleHelperLogoddsToProb (linspace (logOddsLimits (1) logOddsLimits (2), numOfPoints)));interpTable = griddedInterpolant (logOddsLookup、单(intLinSpace),“最近的”);

指定转换函数句柄

transform函数利用示例助手来定义如何在具有应用饱和限制的对数概率整数值和概率值之间进行转换。概率饱和极限为[0.001 .999]正如前面指定。这种行为类似于occupancyMap对象。

getXformFcn = @ (obj, logodds变长度输入宗量)...exampleHelperIntLogoddsToProb (logodds logOddsLookup (:), intLinSpace);setXformFcn = @ (obj,概率,变长度输入宗量)...exampleHelperProbToIntLogodds(概率、interpTable logOddsLookup (:), intLinSpace, probLimits);

创建映射层

从概率值矩阵生成占用地图层对象。指定get和set转换函数。

occupancyLayer = mapLayer (repmat(0.5、10、10),...“LayerName”“占用”...“GetTransformFcn”getXformFcn,...“SetTransformFcn”, setXformFcn);

注意,在创建映射时,默认值是0.001而不是0。这种差异是因为SetTransformFcn函数已应用于创建对象时的默认值0,这将使值饱和为0.001。

disp (occupancyLayer.DefaultValue)
0.0010

获取和设置映射数据

地图数据与创建时设置的矩阵相匹配。

extData = getMapData (occupancyLayer)
extData =10×100.5000 0.5000 0.5000 0.5000 0.5000 0.5000 0.5000 0.5000 0.5000 0.5000 0.5000 0.5000 0.5000 0.5000 0.5000 0.5000 0.5000 0.5000 0.5000 0.5000 0.5000 0.5000 0.5000 0.5000 0.5000 0.5000 0.5000 0.5000 0.5000 0.5000 0.5000 0.5000 0.5000 0.5000 0.5000 0.5000 0.5000 0.5000 0.5000 0.5000 0.5000 0.5000 0.5000 0.5000 0.5000 0.5000 0.5000 0.5000 0.5000 0.50000.5000 0.5000 0.5000 0.5000 0.5000 0.5000 0.5000 0.5000 0.5000 0.5000 0.5000 0.5000 0.5000 0.5000 0.5000 0.5000 0.5000 0.5000 0.5000 0.5000 0.5000 0.5000 0.5000 0.5000 0.5000 0.5000 0.5000 0.5000 0.5000 0.5000 0.5000 0.5000 0.5000 0.5000 0.5000 0.5000 0.5000 0.5000 0.5000 0.5000 0.5000 0.5000 0.5000 0.5000 0.5000 0.5000 0.5000 0.5000 0.5000 0.5000

将特定的地图位置设置为以下值:

  • 在概率饱和极限之外。

  • 比查找表的分辨率更高的精度。

setMapData(occupancyLayer,[0 0],0.00001)

对于第一个位置,概率限制在饱和极限。

extData = getMapData(occupancyLayer,[0 0])
extData = 0.0010

第二个位置返回查找表中最接近概率值的值。

extData2 = getMapData(occupancyLayer,[5 5])
extData2 = 0.2600

生成的地图层现在可以用来更新概率占用的任何地图存储为int16值。若要将此地图与其他图层或地图类型组合,请参阅multiLayerMap对象。

输入参数

全部折叠

地图层,指定为mapLayer对象。

世界或局部坐标,指定为n2的矩阵xy对,n是坐标的个数。

数据类型:

网格位置,指定为n2的矩阵j关口格式,n为网格位置的数目。

数据类型:

输出矩阵的左下角在世界坐标或局部坐标中的位置,指定为一个二元素向量,[xCoord yCoord].位置是基于语法的世界坐标或本地坐标。

数据类型:

子区域映射的大小,指定为一个双元素向量(x, y)在世界或局部坐标中。

数据类型:

输出网格大小,指定为双元素向量(行坳)

数据类型:

网格左上角的位置,指定为一个二元向量,[iCoord jCoord]

数据类型:

输出参数

全部折叠

数据值从地图层,返回作为一个矩阵。默认情况下,函数返回层上的所有数据——- - - - - -N——- - - - - -DataDims矩阵。N分别为网格的行和列。DataDims是地图数据的维度,map.DataSize(3:结束)

对于其他语法,映射数据可以作为具有大小的值数组返回N——- - - - - -DataDims或者作为整个矩阵的子区域。

有效的地图位置,返回为n列向量的长度是xyij.地图限制内的位置返回值为1。地图限制之外的位置返回值为0。

扩展功能

C / c++代码生成
使用MATLAB®Coder™生成C和c++代码。

介绍了R2021a