主要内容

mapLayer

创建映射层N维数据

描述

mapLayer对象创建一个N维网格地图,首先两个维度确定地图的足迹,和所有后续维度决定的大小和布局的数据存储在每个单元格。用于存储网格地图标量二进制或概率值,使用binaryOccupancyMapoccupancyMap而不是对象。

地图层存储数据网格细胞代表一个离散的空间区域。使用查询和更新数据的世界,当地,或者网格坐标,使用getMapDatasetMapData对象的功能。图中的每个网格单元可以任何规模的存储数据从一个多维数组的值。有关更多信息,请参见DataSize财产。

层行为还可以通过提供定制处理函数中创建使用GetTransformFcnSetTransformFcn属性。

创建

描述

地图= mapLayer创建一个空的地图对象占据10米空间分辨率1细胞每米。

地图= mapLayer (p)创建一个映射矩阵和矩阵数组中的值p。三维矩阵数组,地图里的每一个细胞都充满了向量的值在每个网格位置的三维数组。对于一个N——- - - - - -D矩阵数组,每个单元格包含一个矩阵(N= 4)或一个矩阵阵列(N> 4)的数据网格的位置。

地图= mapLayer (宽度,高度)创建一个地图覆盖指定的宽度和高度的分辨率1细胞每米。

地图= mapLayer (,关口“网格”)创建一个网格大小的地图,关口解决1细胞每米。

地图= mapLayer (宽度,高度,cellDims)创建地图数据存储在每个单元格的大小定义为整数的数组cellDims

地图= mapLayer (,关口,cellDims“网格”)创建一个网格大小的地图关口在数据存储在每个单元格的大小定义为整数的数组cellDims

地图= mapLayer (sourceMap)使用图层复制创建一个新对象mapLayer对象。

例子

地图= mapLayer (___,名称,值)指定属性值使用名称-值对。

例如,mapLayer (__“LocalOriginInWorld”[20] 15)设置本地起源到特定的位置。

属性

全部展开

的大小N维数据矩阵,指定为向量的整数。前两个维度定义地图的足迹,和所有后续维度决定的大小和布局的数据存储在每个单元格。默认值假设一个值存储为每个细胞在10 *网格。

如果商店一个地图n元向量中的值的每一个细胞,这个属性(宽度高度n)

如果地图存储10 *网格与含有3-by-3-by-3矩阵数组的每一个细胞,数据的大小(10 10 3 3 3)

这个属性设置当您创建对象基于输入矩阵的维度p或输入宽度,高度,cellDims

创建对象后,这个属性是只读的。

数据类型:

数据类型的值存储在映射中,指定为一个特征向量。

这个属性设置基于输入的数据类型p的数据类型DefaultValue。创建对象后,这个属性是只读的。

数据类型:字符

默认值以外的未指定的地区位置包括地图地图,指定为一个数字标量。

如果你指定GetTransformFcnSetTransformFcn属性在创建对象时,默认值是更新基于转换函数。如果你创建映射矩阵的值p,变换函数修改之前的值存储。

数据类型:

转换适用于检索的值getMapData函数,指定为一个函数处理。

这个函数处理被称为内getMapData对象的功能。它可以用来转换适用于从地图层检索值。函数定义必须具有以下格式:

modifiedValues = getTransformFcnHandle(地图、价值观、变长度输入宗量)

输出的大小modifiedValues必须匹配输入的大小。函数提供了所有地图数据的访问getMapData这个变换函数通过目标函数变长度输入宗量输入。

你可以设置这个属性,当你创建对象。创建对象后,这个属性是只读的。

数据类型:function_handle

手机的左下角时网格的位置在世界坐标系中,指定为一个双元素向量,[xWorld yWorld]

你可以设置这个属性,当你创建对象。

数据类型:

手机的左下角时网格在当地的位置坐标,指定为一个双元素向量,[xLocal yLocal]

你可以设置这个属性,当你创建对象。

数据类型:

在网格的行数和列,存储为1×2实值向量代表的行数和列顺序。

这个属性设置当您创建对象基于第一个输入矩阵的两个维度p,输入宽度高度或输入上校

数据类型:

地图层,名称指定为一个特征向量或字符串标量。

你可以设置这个属性,当你创建对象。创建对象后,这个属性是只读的。

数据类型:

当地的起源框架的位置在世界坐标系中,指定为一个双元素向量,[xLocal yLocal]。使用移动函数将当地的帧作为车辆移动。

你可以设置这个属性,当你创建对象。

数据类型:

这个属性是只读的。

网格分辨率,作为一个标量存储在细胞每米代表的数量和大小网格的位置。

你可以设置这个属性,当你创建对象。创建对象后,这个属性是只读的。

数据类型:

转换适用于设定的值setMapData函数,指定为一个函数处理。

这个函数处理被称为内setMapData对象的功能。它可以用来转换应用到地图层中设置值。函数必须有如下语法:

modifiedValues = setTransformFcnHandle(地图、价值观、变长度输入宗量)如果元素个数(变长度输入宗量)= = 0返回;%其他的%的自定义代码结束结束

输出的大小,modifiedValues必须匹配输入的大小,。提供了所有地图数据中指定的函数setMapData目标函数变换函数。当创建这个对象没有起始值,函数没有额外的输入参数,指定一个if语句返回当元素的数量varagin是零。

你可以设置这个属性,当你创建对象。创建对象后,这个属性是只读的。

数据类型:function_handle

这个属性是只读的。

最小和最大的值x坐标在当地坐标系,存储为一个双元素水平向量的形式(最小最大)。当地的框架定义的LocalOriginInWorld财产。

数据类型:

这个属性是只读的。

最小和最大的值y坐标在当地坐标系,存储为一个双元素水平向量的形式(最小最大)。当地的框架定义的LocalOriginInWorld财产。

数据类型:

这个属性是只读的。

最小和最大世界范围的值x坐标,存储为1×2向量表示的最小值和最大值,在这种秩序。

数据类型:

这个属性是只读的。

最小和最大世界范围的值y坐标,存储为1×2向量表示的最小值和最大值,在这种秩序。

数据类型:

对象的功能

getMapData 从地图检索数据层
grid2local 网格指标转换为局部坐标
grid2world 转换为世界坐标网格索引
local2grid 局部坐标转换为网格索引
local2world 局部坐标转换为世界坐标
移动 在世界地图坐标系移动
setMapData 分配数据映射层
syncWith 同步地图重叠的地图
world2grid 世界坐标转换为网格索引
world2local 世界坐标转换为局部坐标

例子

全部折叠

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

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

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

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

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

得到所有的地图数据矩阵。得到速度的xy-locations值通过创建数组,最小值和最大值xy世界限制和转移到grid-center位置。的y位置时翻转为世界坐标之间的转换矩阵。想象那些grid-center位置使用相对应的速度箭袋函数。

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(重塑([-50100],[1 1 2]),5、10);setMapData ([0 0], vLayer 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对象允许您应用定制element-wise转换设置和获取数据时的地图。将数据集或从地图上,指定函数处理的GetTransfomFcnSetTransformFcn属性。这个例子展示了如何实现一个log-odds probabilitistic地图层通过创建一个查找表的概率和log-odds值。之间的转换函数使用这些查找表来转换这些值设置或获取数据时。

创建查找表

生成一个完整的查找表的值映射概率值的最小值和最大值范围int16值。

创建一个数组的int16值从intminintmax。定义probablilty限制。

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

exampleHelperProbToLogoddsexamplerHelperLogoddsToProb函数之间的秘密log-odds和概率值。使用辅助函数来获得log-odds限制和为查找log-odds生成数组值。创建一个插值网格对整个查找表。

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

指定转换函数处理

变换函数处理利用例子助手log-odds之间定义如何将整数值和概率值,应用饱和极限。概率饱和限制[0.001 .999]正如前面指定。这种行为类似于occupancyMap对象。

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

创建映射层

生成一个入住率从概率值的矩阵映射层对象。指定获取和设置转换函数。

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.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 0.5000

设置特定的位置映射到值:

  • 外的概率饱和限制。

  • 查找表的精度高于该决议。

setMapData (occupancyLayer [0 0], 0.00001) setMapData (occupancyLayer 5 [5], 0.25999)

第一的位置,概率是绑定到饱和限制。

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

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

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

生成的映射层现在可以用于更新被存储为一个概率occupany映射int16值。把这张地图与其他层或地图类型,看到multiLayerMap对象。

限制

  • mapLayer只能属于一个对象multiLayerMap对象。

扩展功能

版本历史

介绍了R2021a