getMapData
Sintaxis
Descripción
devuelve un arreglo de celdas de matrices para los datos en cada capa del objeto mapData
= getMapData(map
)multiLayerMap
especificado. Para las capas de mapas binarios o de ocupación, los valores de esta función se pasan a la función getOccupancy
. mapData
se devuelve como una matriz de celdas de matrices para cada capa.
toma los argumentos mapData
= getMapData(map
,layername
,layerinputs
)layerinputs
y los pasa a la función de objeto getMapData
para el nombre de capa de mapa especificado. Para acceder a celdas individuales o bloques de datos en las coordenadas mundiales, locales o de la cuadrícula, consulte las sintaxis de getMapData
.
Ejemplos
El objeto multiLayerMap
le permite agrupar múltiples capas de mapas y definir el comportamiento de esas capas al configurar y obtener datos. Al utilizar capas de mapas independientes, puede almacenar varios datos de mapas y especificar diferentes comportamientos para cada uno. También puede definir los identificadores de función SetTransformFcn
y GetTransformFcn
para una capa de mapa de modo que se creen dependencias entre capas. Este ejemplo muestra cómo almacenar datos en una capa de mapa e implementar detectores de eventos que actualizan otros mapas. Estos mapas almacenan cuántas veces se actualizan o se accede a los datos.
Capas dependientes
Crea dos capas de mapa independientes.
mapAccessed = mapLayer(zeros(10,10),"LayerName","GetListener"); mapModified = mapLayer(zeros(10,10),"LayerName","SetListener");
Especifique controladores de función para las funciones de transformación get y set utilizadas en la capa del mapa principal. Estas funciones incrementan el valor de una ubicación de cuadrícula cuando obtiene o establece datos de mapa en el mapa de entrada mainMap
. Consulte Controladores de funciones de escucha para ver la implementación de la función.
getHookFcn = @(mainMap,values,varargin)exampleHelperGetHookFcn(mapAccessed,mainMap,values,varargin{:}); setHookFcn = @(mainMap,values,varargin)exampleHelperSetHookFcn(mapModified,mainMap,values,varargin{:});
Cree la capa del mapa principal con valores predeterminados de 0,5. Especifique los identificadores de función para crear las dependencias de capa.
map = mapLayer(repmat(0.5,10,10), ... 'GetTransformFcn',getHookFcn, ... 'SetTransformFcn',setHookFcn);
Agrega todos los mapas al mismo objeto multiLayerMap
.
multiMapLayers = multiLayerMap({map,mapAccessed,mapModified})
multiMapLayers = multiLayerMap with properties: Map Properties NumLayers: 3 GridSize: [10 10] Resolution: 1 GridLocationInWorld: [0 0] GridOriginInLocal: [0 0] LocalOriginInWorld: [0 0] XLocalLimits: [0 10] YLocalLimits: [0 10] XWorldLimits: [0 10] YWorldLimits: [0 10] Layer Properties LayerNames: {'mapLayer' 'GetListener' 'SetListener'} DataSize: {[10 10] [10 10] [10 10]} DataType: ["double" "double" "double"] DefaultValue: {[0] [0] [0]}
Establezca la ubicación del mapa (0,0) con un valor de cero utilizando la función de objeto setMapData
del objeto multiLayerMap
.
setMapData(multiMapLayers,"mapLayer",[0 0],0)
Verifique que la capa de mapa SetListener
incrementó su valor.
getMapData(multiMapLayers,"SetListener",[0 0])
ans = 1
Obtenga los datos que acaba de configurar en la capa del mapa principal. Se devuelve el valor esperado de cero.
getMapData(multiMapLayers,"mapLayer",[0 0])
ans = 0
Verifique que la capa de mapa GetListener
incrementó su valor.
getMapData(multiMapLayers,"GetListener",[0 0])
ans = 1
Actualiza todo el mapa con una matriz de valores. Accede a los datos también.
setMapData(multiMapLayers,"mapLayer",rand(10,10)) getMapData(multiMapLayers,"mapLayer")
ans = 10×10
0.8147 0.1576 0.6557 0.7060 0.4387 0.2760 0.7513 0.8407 0.3517 0.0759
0.9058 0.9706 0.0357 0.0318 0.3816 0.6797 0.2551 0.2543 0.8308 0.0540
0.1270 0.9572 0.8491 0.2769 0.7655 0.6551 0.5060 0.8143 0.5853 0.5308
0.9134 0.4854 0.9340 0.0462 0.7952 0.1626 0.6991 0.2435 0.5497 0.7792
0.6324 0.8003 0.6787 0.0971 0.1869 0.1190 0.8909 0.9293 0.9172 0.9340
0.0975 0.1419 0.7577 0.8235 0.4898 0.4984 0.9593 0.3500 0.2858 0.1299
0.2785 0.4218 0.7431 0.6948 0.4456 0.9597 0.5472 0.1966 0.7572 0.5688
0.5469 0.9157 0.3922 0.3171 0.6463 0.3404 0.1386 0.2511 0.7537 0.4694
0.9575 0.7922 0.6555 0.9502 0.7094 0.5853 0.1493 0.6160 0.3804 0.0119
0.9649 0.9595 0.1712 0.0344 0.7547 0.2238 0.2575 0.4733 0.5678 0.3371
Compruebe que las capas de mapa GetListener
y SetListener
incrementaron sus valores.
getMapData(multiMapLayers,"SetListener")
ans = 10×10
1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1
2 1 1 1 1 1 1 1 1 1
getMapData(multiMapLayers,"GetListener")
ans = 10×10
1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1
2 1 1 1 1 1 1 1 1 1
La ubicación inferior izquierda devuelve dos y todos los demás valores son uno. Esto confirma que las funciones del oyente funcionan según lo previsto.
Controladores de función de escucha
Estas funciones implementan las funciones auxiliares de ejemplo get y set que actualizan las otras capas del mapa.
function valuesOut = exampleHelperSetHookFcn(modifiedMap,sourceLayer,valueIn,varargin) % Pass output through valuesOut = valueIn; % If no additional inputs are passed, return immediately. if numel(varargin) == 0 return; else % Otherwise, increment the value in the modifiedMap. if numel(varargin) == 1 currentValue = getMapData(modifiedMap); setMapData(modifiedMap,currentValue+1); else currentValue = getMapData(modifiedMap,varargin{1},varargin{3:end}); % setMapData syntax <<<<>>>> setMapData(modifiedMap,varargin{1},currentValue+1,varargin{3:end}); end end end function data = exampleHelperGetHookFcn(accessedMap,sourceLayer,valuesIn,varargin) data = valuesIn; % If no additional inputs are passed, check if the values in if numel(varargin) == 0 if isequal(size(valuesIn),sourceLayer.DataSize) % Increment the dependent map. currentValue = getMapData(accessedMap); setMapData(accessedMap,currentValue+1); end else currentValue = getMapData(accessedMap,varargin{:}); setMapData(accessedMap,varargin{1},currentValue+1,varargin{3:end}); end end
Argumentos de entrada
Mapa multicapa, especificado como un objeto multiLayerMap
.
Nombre de la capa del mapa, especificado como un escalar de cadena o una arreglo de caracteres. Las capas de mapa tienen su nombre especificado al crear el objeto multiLayerMap
.
Entradas de longitud variable para la función getMapData
de la capa de mapa, especificadas como varargin
. Para especificar celdas individuales o bloques de datos en las coordenadas mundiales, locales o de la cuadrícula, consulte las sintaxis de getMapData
.
Argumentos de salida
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 la altura y el ancho de la cuadrícula respectivamente. DataDims son las dimensiones de los datos del mapa, map.DataSize(3,:)
.
Para otras sintaxis, los datos del mapa se pueden proporcionar como una matriz de valores con tamaño N por DataDims o como una subregión de la matriz completa.
Historial de versiones
Introducido en R2021a
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
Seleccione un país/idioma
Seleccione un país/idioma para obtener contenido traducido, si está disponible, y ver eventos y ofertas de productos y servicios locales. Según su ubicación geográfica, recomendamos que seleccione: .
También puede seleccionar uno de estos países/idiomas:
Cómo obtener el mejor rendimiento
Seleccione China (en idioma chino o inglés) para obtener el mejor rendimiento. Los sitios web de otros países no están optimizados para ser accedidos desde su ubicación geográfica.
América
- América Latina (Español)
- Canada (English)
- United States (English)
Europa
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)