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.

setMapData

Asignar datos a capas de mapa

Desde R2021a

Descripción

setMapData(map,layername,layerinputs) toma los argumentos layerinputs y los pasa a la función de objeto setMapData para el nombre de capa de mapa especificado. Para especificar celdas individuales o bloques de datos en las coordenadas mundiales, locales o de la cuadrícula, consulte las sintaxis de setMapData.

ejemplo

inBounds = setMapData(map,layername,layerinputs) devuelve una matriz de valores para las ubicaciones dadas en el argumento de entrada layerinputs.

Ejemplos

contraer todo

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

contraer todo

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

Argumentos de salida

contraer todo

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