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 capas de mapa binario o de ocupación, los valores de esta función se pasan a la función getOccupancy
. mapData
se devuelve como un arreglo 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 o bloques de datos individuales en coordenadas mundiales, locales o de cuadrícula, consulte las sintaxis de getMapData
.
Ejemplos
Crear oyentes utilizando capas de mapas dependientes
El objeto multiLayerMap
le permite agrupar múltiples capas de mapa 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 para 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 Listener Function Handles para conocer 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 controladores de función para crear las dependencias de las capas.
map = mapLayer(repmat(0.5,10,10), ... 'GetTransformFcn',getHookFcn, ... 'SetTransformFcn',setHookFcn);
Agregue 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 usando la función de objeto setMapData
del objeto multiLayerMap
.
setMapData(multiMapLayers,"mapLayer",[0 0],0)
Compruebe que la capa del 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
Compruebe que la capa del 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 depedent 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
map
— Mapa multicapa
multiLayerMap
objeto
Mapa multicapa, especificado como un objeto multiLayerMap
.
layername
— Nombre de la capa del mapa
escalar de cadena | arreglo de caracteres
Nombre de la capa del mapa, especificado como una cadena escalar o un arreglo de caracteres. Las capas del mapa tienen su nombre especificado al crear el objeto multiLayerMap
.
layerinputs
— Entradas de longitud variable para la capa del mapa
varargin
Entradas de longitud variable para la función getMapData
de la capa del mapa, especificada como varargin
. Para especificar celdas individuales o bloques de datos en las coordenadas mundiales, locales o de cuadrícula, consulte las sintaxis de getMapData
.
Argumentos de salida
mapData
— Valores de datos de la capa del mapa.
matriz
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 un arreglo de valores con tamaño N-por- DataDims o como una subregión de la matriz completa.
Historial de versiones
Introducido en R2021a
Comando de MATLAB
Ha hecho clic en un enlace que corresponde a este comando de MATLAB:
Ejecute el comando introduciéndolo en la ventana de comandos de MATLAB. Los navegadores web no admiten comandos de MATLAB.
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- 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)