Main Content

Cette page a été traduite par traduction automatique. Cliquez ici pour voir la dernière version en anglais.

navGraph

Créer un objet navGraph

Depuis R2023a

    Description

    L'objet navGraph est une structure de données graphique pour Navigation Toolbox™ qui aide les planificateurs basés sur la recherche.

    L'objet navGraph vous permet de créer un graphique et d'effectuer des calculs dessus. L'objet navGraph prend en charge des fonctionnalités fréquemment utilisées par les algorithmes de recherche de graphiques. Vous pouvez facilement implémenter Dijkstra, A* ou des variantes en utilisant navGraph.

    Dans la théorie des graphes, les états représentent des nœuds et les liens représentent des arêtes. Les états et les liens sont représentés par leur index de ligne correspondant dans le tableau. Le navGraph est un graphe orienté qui prend actuellement en charge les noms uniques, sans auto-boucles dans les arêtes.

    Création

    Description

    graph = navGraph(states,links) crée un objet navGraph avec des nœuds spécifiés comme une matrice d'états et des arêtes spécifiées comme une matrice de liens (ou nœuds d'extrémité). Les entrées states et links définissent respectivement les valeurs des propriétés States et Links .

    graph = navGraph(___,Name=Value) spécifie des paramètres supplémentaires en utilisant les arguments nom-valeur Name et Weight en plus de l'argument de la syntaxe précédente.

    graph = navGraph(digraph) crée un objet navGraph à partir des données présentes dans l'objet digraph spécifié.

    exemple

    graph = navGraph(stateTable,linkTable) crée un objet navGraph avec la table d'état et la table de liens spécifiées, qui contiennent les métadonnées du graphique. Les entrées stateTable et linkTable définissent respectivement la valeur des propriétés States et Links .

    graph = navGraph(___,Name=Value) spécifie des paramètres supplémentaires en utilisant l'argument nom-valeur LinkWeightFcn en plus des arguments des syntaxes précédentes.

    Arguments en entrée

    développer tout

    Vecteurs d'état, spécifiés sous forme de matrice dans laquelle chaque ligne représente un vecteur d'état.

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

    Types de données : double

    Vecteurs de lien, spécifiés sous la forme d'une matrice dans laquelle chaque ligne représente une paire d'ID d'état sous la forme d'un vecteur de ligne à deux éléments d'entiers positifs.

    Exemple : [6 1; 7 7; 6 6]

    Types de données : double

    Graphique orienté, spécifié comme objet digraph . La première colonne doit être StateVector dans la table des nœuds d'objet digraph .

    Table d'état des nœuds du graphique, spécifiée sous forme de table avec des lignes contenant des variables décrivant les nœuds (états) du graphique. La première colonne doit être StateVector, qui représente les vecteurs d'état de l'environnement. Vous pouvez éventuellement inclure d'autres colonnes de métadonnées, telles qu'une colonne Name représentant les noms des états.

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

    Types de données : table

    Table de liens des arêtes du graphique, spécifiée sous forme de tableau avec des lignes contenant des variables décrivant les arêtes (liens) du graphique. La première colonne doit être EndStates, qui représente les états de connexion. Vous pouvez éventuellement inclure d'autres colonnes de métadonnées, telles qu'une colonne Weight représentant les coûts de traversée des liens.

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

    Types de données : table

    Arguments nom-valeur

    Spécifiez des paires d'arguments facultatives sous la forme Name1=Value1,...,NameN=ValueN, où Name est le nom de l'argument et Value est la valeur correspondante. Les arguments nom-valeur doivent apparaître après les autres arguments, mais l'ordre des paires n'a pas d'importance.

    Exemple : LinkWeightFcn=@nav.algs.distanceManhattan

    Noms d’état, spécifiés sous la forme d’un vecteur colonne de caractères, d’un vecteur colonne de chaînes ou cell array de caractères. Le nombre de lignes doit être égal au nombre d'états et la valeur de chaque ligne doit être unique.

    Exemple : Name=['A'; 'B'; 'C']

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

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

    Types de données : char | string | cell

    Pondérations de lien, spécifiées sous forme de vecteur de colonne numérique. Le nombre de lignes doit être égal au nombre de liens.

    Exemple : Weight=[2.22; 24.41; 42.76]

    Types de données : single | double

    Fonction de pondération des liens, spécifiée comme descripteur de fonction qui calcule les pondérations des liens en l'absence de l'argument Weight . L'argument LinkWeightFcn définit la valeur de la propriété LinkWeightFcn .

    Le handle de fonction doit être de l’un des types suivants :

    1. COST = @(STATE1,STATE2)fcn, où STATE1 et STATE2 sont des vecteurs d'état.

    2. COST = @(STATEID1,STATEID2,GRAPHOBJ)fcn, où STATEID1 et STATEID2 sont des indices d'état.

    STATE1 et STATEID1 peuvent avoir une seule ligne ou N lignes, tandis que STATE2 et STATEID2 doit avoir des lignes N .

    Remarque

    Pour de meilleures performances, vectorisez la poignée de fonction.

    Exemple : LinkWeightFcn=@nav.algs.distanceManhattan

    Types de données : function_handle

    Propriétés

    développer tout

    Ce propriété est en lecture seule.

    Table d'état des nœuds du graphique, spécifiée sous forme de table avec des lignes contenant des variables décrivant les nœuds (états) du graphique. La première colonne doit être StateVector, qui représente les vecteurs d'état de l'environnement. Vous pouvez éventuellement inclure d'autres colonnes de métadonnées, telles qu'une colonne Name représentant les noms des états.

    Types de données : table

    Ce propriété est en lecture seule.

    Table de liens des arêtes du graphique, spécifiée sous forme de tableau avec des lignes contenant des variables décrivant les arêtes (liens) du graphique. La première colonne doit être EndStates, qui représente les états de connexion. Vous pouvez éventuellement inclure d'autres colonnes de métadonnées, telles qu'une colonne Weight représentant les coûts de traversée des liens.

    Types de données : table

    Fonction de poids de lien, spécifiée comme descripteur de fonction qui calcule le coût de traversée du lien.

    Le handle de fonction doit être de l’un des types suivants :

    1. COST = @(STATE1,STATE2)fcn, où STATE1 et STATE2 sont des vecteurs d'état.

    2. COST = @(STATEID1,STATEID2,GRAPHOBJ)fcn, où STATEID1 et STATEID2 sont des indices d'état.

    STATE1 et STATEID1 peuvent avoir une seule ligne ou N lignes, tandis que STATE2 et STATEID2 doit avoir des lignes N .

    Remarque

    Pour de meilleures performances, vectorisez la poignée de fonction.

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

    Types de données : function_handle

    Fonctions d'objet

    findlinkTrouver les identifiants des liens
    findstateTrouver les identifiants des états
    index2stateTrouver des vecteurs d'état d'indices d'état
    state2indexRechercher des indices pour les vecteurs d'état interrogés
    successorsTrouver des indices d'état et des coûts successifs
    showReprésentation graphique du tracé
    copyCréer une copie complète de l'objet navGraph

    Exemples

    réduire tout

    Chargez les données pour les états et les liens.

    load navGraphData.mat

    Créez des tables d'état et de liens.

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

    Créez un objet navGraph à partir des tables d'état et de liens.

    graphObj = navGraph(stateTable,linkTable);

    Créez une copie complète de l'objet navGraph .

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

    Visualisez l'objet navGraph .

    show(graphObj)

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

    Recherchez les ID de lien de deux paires d’états. La fonction renvoie l'ID de lien pour la paire d'états ["G","A"]. Cependant, il renvoie 0 comme ID de lien pour la paire d'états ["C","D"] car le lien n'existe pas dans l'objet navGraph .

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

    Capacités étendues

    Historique des versions

    Introduit dans R2023a