Main Content

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

navGraph

Crear navGraph objeto

Desde R2023a

    Descripción

    El objeto navGraph es una estructura de datos de gráfico para Navigation Toolbox™ que ayuda a los planificadores basados ​​en búsquedas.

    El objeto navGraph le permite crear un gráfico y realizar cálculos en él. El objeto navGraph admite funcionalidades que los algoritmos de búsqueda de gráficos utilizan con frecuencia. Puede implementar fácilmente Dijkstra, A* o variantes usando navGraph.

    En teoría de grafos, los estados representan nodos y los enlaces representan aristas. Los estados y enlaces están representados por su índice de fila correspondiente en la tabla. El navGraph es un gráfico dirigido que actualmente admite nombres únicos, sin bucles automáticos en los bordes.

    Creación

    Descripción

    graph = navGraph(states,links) crea un objeto navGraph con nodos especificados como una matriz de estados y bordes especificados como una matriz de enlaces (o nodos finales). Las entradas states y links establecen los valores de las propiedades States y Links , respectivamente.

    graph = navGraph(___,Name=Value) especifica parámetros adicionales utilizando los argumentos nombre-valor Name y Weight además del argumento de la sintaxis anterior.

    graph = navGraph(digraph) crea un objeto navGraph a partir de los datos presentes en el objeto digraph especificado.

    ejemplo

    graph = navGraph(stateTable,linkTable) crea un objeto navGraph con la tabla de estado y la tabla de enlaces especificadas, que contienen los metadatos para el gráfico. Las entradas stateTable y linkTable establecen el valor de las propiedades States y Links , respectivamente.

    graph = navGraph(___,Name=Value) especifica parámetros adicionales utilizando el argumento nombre-valor LinkWeightFcn además de los argumentos de las sintaxis anteriores.

    Argumentos de entrada

    expandir todo

    Vectores de estado, especificados como una matriz en la que cada fila representa un vector de estado.

    Ejemplo: [9 10 0.42; 10 10 0.92; 7 10 0.65]

    Tipos de datos: double

    Vectores de enlace, especificados como una matriz en la que cada fila representa un par de ID de estado como un vector fila de dos elementos de números enteros positivos.

    Ejemplo: [6 1; 7 7; 6 6]

    Tipos de datos: double

    Gráfico dirigido, especificado como un objeto digraph . La primera columna debe ser StateVector en la tabla de nodos de objetos digraph .

    Tabla de estados de los nodos del gráfico, especificada como una tabla con filas que contienen variables que describen los nodos (estados) del gráfico. La primera columna debe ser StateVector, que representa los vectores de estado del entorno. Opcionalmente, puede incluir otras columnas de metadatos, como una columna Name que representa los nombres de los estados.

    Ejemplo: table([9 10 0.42; 10 10 0.92; 7 10 0.65],VariableNames={'StateVector'})

    Tipos de datos: table

    Tabla de enlaces de bordes del gráfico, especificada como una tabla con filas que contienen variables que describen los bordes (vínculos) del gráfico. La primera columna debe ser EndStates, que representa los estados de conexión. Opcionalmente, puede incluir otras columnas de metadatos, como una columna Weight que representa los costes de atravesar los enlaces.

    Ejemplo: table([6 1; 7 7; 6 6],VariableNames={'EndStates'})

    Tipos de datos: table

    Argumentos de par nombre-valor

    Especifique pares de argumentos opcionales como Name1=Value1,...,NameN=ValueN, donde Name es el nombre del argumento y Value es el valor correspondiente. Los argumentos nombre-valor deben aparecer después de los otros argumentos, pero el orden de los pares no importa.

    Ejemplo: LinkWeightFcn=@nav.algs.distanceManhattan

    Nombres de estado, especificados como un vector columna de caracteres, un vector columna de cadenas o un arreglo de celdas de caracteres. El número de filas debe ser igual al número de estados y el valor de cada fila debe ser único.

    Ejemplo: Name=["A"; "B"; "C"]

    Ejemplo: Name={'A'; 'B'; 'C'}

    Tipos de datos: string | cell

    Pesos de enlace, especificados como un vector columna numérico. El número de filas debe ser igual al número de enlaces.

    Ejemplo: Weight=[2.22; 24.41; 42.76]

    Tipos de datos: single | double

    Función de pesos de enlace, especificada como un identificador de función que calcula los pesos de enlace en ausencia del argumento Weight . El argumento LinkWeightFcn establece el valor de la propiedad LinkWeightFcn .

    El identificador de función debe ser uno de estos tipos:

    1. COST = @(STATE1,STATE2)fcn, donde STATE1 y STATE2 son vectores de estado.

    2. COST = @(STATEID1,STATEID2,GRAPHOBJ)fcn, donde STATEID1 y STATEID2 son índices estatales.

    STATE1 y STATEID1 pueden tener una sola fila o N filas, mientras que STATE2 y STATEID2 debe tener N filas.

    Nota

    Para obtener el mejor rendimiento, vectorice el identificador de función.

    Ejemplo: LinkWeightFcn=@nav.algs.distanceManhattan

    Tipos de datos: function_handle

    Propiedades

    expandir todo

    Esta propiedad o parámetro es de solo lectura.

    Tabla de estados de los nodos del gráfico, especificada como una tabla con filas que contienen variables que describen los nodos (estados) del gráfico. La primera columna debe ser StateVector, que representa los vectores de estado del entorno. Opcionalmente, puede incluir otras columnas de metadatos, como una columna Name que representa los nombres de los estados.

    Tipos de datos: table

    Esta propiedad o parámetro es de solo lectura.

    Tabla de enlaces de bordes del gráfico, especificada como una tabla con filas que contienen variables que describen los bordes (vínculos) del gráfico. La primera columna debe ser EndStates, que representa los estados de conexión. Opcionalmente, puede incluir otras columnas de metadatos, como una columna Weight que representa los costes de atravesar los enlaces.

    Tipos de datos: table

    Función de peso del enlace, especificada como un identificador de función que calcula el coste de atravesar el enlace.

    El identificador de función debe ser uno de estos tipos:

    1. COST = @(STATE1,STATE2)fcn, donde STATE1 y STATE2 son vectores de estado.

    2. COST = @(STATEID1,STATEID2,GRAPHOBJ)fcn, donde STATEID1 y STATEID2 son índices estatales.

    STATE1 y STATEID1 pueden tener una sola fila o N filas, mientras que STATE2 y STATEID2 debe tener N filas.

    Nota

    Para obtener el mejor rendimiento, vectorice el identificador de función.

    Ejemplo: graph.LinkWeightFcn=@nav.algs.distanceManhattan

    Tipos de datos: function_handle

    Funciones del objeto

    findlinkBuscar ID de enlaces
    findstateEncuentra identificaciones de estados
    index2stateEncontrar vectores de estado de índices estatales
    state2indexBuscar índices para vectores de estado consultados
    successorsEncuentre índices y costes estatales sucesivos.
    showTrazar representación gráfica
    copyCrear copia profunda del objeto navGraph

    Ejemplos

    contraer todo

    Cargar datos para estados y enlaces.

    load navGraphData.mat

    Crear tablas de estados y enlaces.

    stateTable = table(data.states,data.names,data.numLanes, ...
        VariableNames=["StateVector","Name","Lanes"]);
    linkTable = table(data.links,data.linkWt,data.curvature, ...
        VariableNames=["EndStates","Weight","Curvature"]);

    Cree un objeto navGraph a partir de las tablas de estado y enlaces.

    graphObj = navGraph(stateTable,linkTable);

    Cree una copia profunda del objeto navGraph .

    graph2 = copy(graphObj)
    graph2 = 
      navGraph with properties:
    
               States: [8x3 table]
                Links: [7x3 table]
        LinkWeightFcn: @nav.algs.distanceEuclidean
    
    

    Visualice el objeto navGraph .

    show(graphObj)

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

    Encuentre los ID de enlace de dos pares de estados. La función devuelve el ID del enlace para el par de estados ["G","A"]. Sin embargo, devuelve 0 como ID de enlace para el par de estados ["C","D"] ya que el enlace no existe en el objeto navGraph .

    linkIDS = findlink(navGraphObj,["G","A"; "C","D"])
    linkIDS = 2×1
    
         5
         0
    
    

    Capacidades ampliadas

    Historial de versiones

    Introducido en R2023a

    Consulte también

    Objetos

    Funciones