Contenido principal

Esta página se ha traducido mediante traducción automática. Haga clic aquí para ver la última versión en inglés.

getMapData

Recuperar datos de la capa del mapa

Desde R2021a

Descripción

mapData = getMapData(map) devuelve una matriz de valores que contiene todos los datos para la capa de mapa dada map.

ejemplo

mapData = getMapData(map,xy) devuelve una matriz de valores para las ubicaciones xy dadas en coordenadas mundiales.

mapData = getMapData(map,xy,"local") devuelve una matriz de valores para las ubicaciones xy dadas en coordenadas locales.

mapData = getMapData(map,ij,"grid") devuelve una matriz de valores para las ubicaciones ij dadas en coordenadas de cuadrícula. Cada fila de ij se refiere a un índice de celda de la cuadrícula [i j]

[mapData,inBounds] = getMapData(___) también devuelve un vector de valores lógicos que indica si la ubicación de entrada correspondiente xy o ij es válida utilizando las sintaxis anteriores.

mapData = getMapData(map,bottomLeft,mapSize) devuelve una matriz de valores en una subregión de la capa del mapa, map. La subregión comienza en la posición xy inferior izquierda bottomLeft en coordenadas mundiales con un tamaño de mapa dado mapSize especificado como [width height] en metros.

mapData = getMapData(map,bottomLeft,mapSize,"local") especifica la esquina inferior izquierda de la subregión en coordenadas locales.

mapData = getMapData(map,topLeft,gridSize,"grid") especifica la esquina superior izquierda de la subregión en coordenadas de cuadrícula. El tamaño de la subregión, gridSize, también se da en coordenadas de cuadrícula como [rows cols].

Ejemplos

contraer todo

Crea una capa de mapa que almacene dos valores por ubicación de cuadrícula como velocidades xy.

Crea una matriz de valores m por n por 2. El primer elemento en la tercera dimensión es d x y el segundo es d y como velocidades.

dXY = reshape(1:200,10,20);
dXY(:,:,2) = dXY;

Cree una capa de mapa a partir de la matriz. Especifique la resolución y el nombre de la capa.

vLayer = mapLayer(dXY,'Resolution',1,'LayerName','dXY');

Obtenga todos los datos del mapa como una matriz. Obtenga las ubicaciones xy de los valores de velocidad creando matrices que cubran los límites mínimo y máximo del mundo xy y se desplacen a las ubicaciones del centro de la cuadrícula. Las ubicaciones y se invierten al convertir entre coordenadas matriciales a coordenadas mundiales. Visualice las velocidades correspondientes a las ubicaciones del centro de la cuadrícula utilizando la función quiver.

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);

quiver(xLoc,yLoc,v(:,:,1),v(:,:,2))

Figure contains an axes object. The axes object contains an object of type quiver.

Establezca el cuadrante inferior izquierdo con nuevos valores actualizados. Crea los valores como una matriz y especifica la esquina inferior izquierda (0,0) en coordenadas del mapa para la función setData.

updateValues = repmat(reshape([-50,100],[1 1 2]),5,10);

setMapData(vLayer,[0 0],updateValues)
v = getMapData(vLayer);
quiver(xLoc,yLoc,v(:,:,1),v(:,:,2))

Figure contains an axes object. The axes object contains an object of type quiver.

Establezca nuevos valores para el cuadrante superior izquierdo usando coordenadas de cuadrícula. Para los mapas, la ubicación de la cuadrícula superior izquierda es (1,1).

setMapData(vLayer,[1 1],updateValues,'grid')
v = getMapData(vLayer);
quiver(xLoc,yLoc,v(:,:,1),v(:,:,2))

Figure contains an axes object. The axes object contains an object of type quiver.

El objeto mapLayer le permite aplicar transformaciones personalizadas elemento por elemento al configurar y obtener datos en el mapa. Para transformar los datos que establece u obtiene del mapa, especifique los identificadores de función para las propiedades GetTransfomFcn y SetTransformFcn. Este ejemplo muestra cómo implementar una capa de mapa probabilístico de probabilidades logarítmicas mediante la creación de una tabla de búsqueda para valores de probabilidad y probabilidades logarítmicas. Las funciones de transformación utilizan estas tablas de búsqueda para convertir entre estos valores al configurar u obtener datos.

Crear tablas de búsqueda

Genere una tabla de búsqueda completa de valores que asignan los valores de probabilidad a los límites mínimo y máximo de los valores int16.

Crea una matriz de valores int16 desde intmin hasta intmax. Definir los límites de probabilidad.

intType = 'int16';
intLinSpace = intmin(intType):intmax(intType);
numOfPoints = length(intLinSpace);
probLimits = [0.001 0.999];

Las funciones exampleHelperProbToLogodds y examplerHelperLogoddsToProb convierten entre valores de probabilidad y probabilidades logarítmicas. Utilice las funciones auxiliares para obtener los límites de las probabilidades logarítmicas y generar el arreglo para buscar valores de las probabilidades logarítmicas. Cree una cuadrícula interpolada para toda la tabla de búsqueda.

logOddsLimits = exampleHelperProbToLogodds([0.001 0.999]);
logOddsLookup = single(exampleHelperLogoddsToProb(linspace(logOddsLimits(1),logOddsLimits(2),numOfPoints)));
interpTable = griddedInterpolant(logOddsLookup,single(intLinSpace),'nearest');

Especificar identificadores de función de transformación

Los controladores de la función de transformación utilizan ayudas de ejemplo que definen cómo convertir entre valores enteros de probabilidades logarítmicas y los valores de probabilidad con un límite de saturación aplicado. Los límites de saturación de probabilidad son [0.001 .999] como se especificó anteriormente. Este comportamiento es similar al objeto occupancyMap.

getXformFcn = @(obj,logodds,varargin)...
    exampleHelperIntLogoddsToProb(logodds,logOddsLookup(:),intLinSpace);

setXformFcn = @(obj,prob,varargin)...
    exampleHelperProbToIntLogodds(prob,interpTable,logOddsLookup(:),intLinSpace,probLimits);

Crear capa de mapa

Genere un objeto de capa de mapa de ocupación a partir de una matriz de valores de probabilidad. Especifique las funciones de transformación get y set.

occupancyLayer = mapLayer(repmat(0.5,10,10),...
                           'LayerName','Occupancy',...
                           'GetTransformFcn',getXformFcn,...
                           'SetTransformFcn',setXformFcn);

Observe que cuando crea el mapa, el valor predeterminado es 0,001 en lugar de 0. Esta diferencia se debe a que la función SetTransformFcn se ha aplicado al valor predeterminado de 0 cuando se crea el objeto, lo que satura el valor a 0,001.

disp(occupancyLayer.DefaultValue)
    0.0010

Obtener y configurar datos de mapas

Los datos del mapa coinciden con la matriz que configuró al crearlo.

extData = getMapData(occupancyLayer) 
extData = 10×10

    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    0.5000

Establezca ubicaciones de mapa específicas en valores que sean:

  • Fuera de los límites de saturación de probabilidad.

  • Mayor precisión que la resolución de las tablas de consulta.

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

Para la primera ubicación, la probabilidad está limitada a los límites de saturación.

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

La segunda ubicación devuelve el valor más cercano al valor de probabilidad en la tabla de búsqueda.

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

La capa de mapa generada ahora se puede utilizar para actualizar un mapa de ocupación de probabilidad que se almacena como valores int16. Para combinar este mapa con otras capas o tipos de mapas, consulte el objeto multiLayerMap.

Argumentos de entrada

contraer todo

Capa de mapa, especificada como un objeto mapLayer.

Coordenadas mundiales o locales, especificadas como una matriz n por 2 de pares [x y], donde n es el número de coordenadas.

Tipos de datos: double

Posiciones de la cuadrícula, especificadas como una matriz n por 2 de pares [i j] en formato [rows cols], donde n es el número de posiciones de la cuadrícula.

Tipos de datos: double

Ubicación de la esquina inferior izquierda de la matriz de salida en coordenadas mundiales o locales, especificada como un vector de dos elementos, [xCoord yCoord]. La ubicación está en coordenadas mundiales o locales según la sintaxis.

Tipos de datos: double

Tamaño del mapa de la subregión, especificado como un vector de dos elementos [x y] en coordenadas mundiales o locales.

Tipos de datos: double

Tamaño de la cuadrícula de salida, especificado como un vector de dos elementos [row col].

Tipos de datos: double

Ubicación de la esquina superior izquierda de la cuadrícula, especificada como un vector de dos elementos, [iCoord jCoord].

Tipos de datos: double

Argumentos de salida

contraer todo

Valores de datos de la capa del mapa, devueltos como una matriz. De forma predeterminada, la función devuelve todos los datos de la capa como una matriz M por N por DataDims. M y N son las filas y columnas de la cuadrícula respectivamente. DataDims son las dimensiones de los datos del mapa, map.DataSize(3:end).

Para otras sintaxis, los datos del mapa pueden devolverse como una matriz de valores con tamaño N por DataDims o como una subregión de la matriz completa.

Ubicaciones de mapas válidas, devueltas como un vector columna n por 1 con una longitud igual a xy o ij. Las ubicaciones dentro de los límites del mapa devuelven un valor de 1. Las ubicaciones fuera de los límites del mapa devuelven un valor de 0.

Capacidades ampliadas

expandir todo

Generación de código C/C++
Genere código C y C++ mediante MATLAB® Coder™.

Historial de versiones

Introducido en R2021a

expandir todo