Ich muss Kanten eines gerichteten Graphen mit 4 verschiedenen Etiketten beschriften, also ich es in einem N * N * 4-Array speichern. (Bleiben wir bei 4, was meine tatsächliche dritte Dimension ist.) N ist die Anzahl der Knoten im Graphen. für den Eintrag M (i, j, 1) würde ich eine Kante von Knoten i zu Knoten j mit der ersten Art von Label bezeichnen. Hier ist ein Spielzeugbeispiel zum Spielen.Wie Indizes von Nicht-Null-Elementen aus ND-Array extrahieren?
M(2,1,1)=1
anzeigt I Beschriftungstext ‚erstes Etikett‘ auf der Kante vom Knoten 2 zum Knoten 1 zeige M(3,2,2)=1
I hinzuzufügen Beschriftungstext ‚zweites Etikett‘ auf der Kante von dem Knoten 3 zu Knoten 2. Jede ‚Seite‘ in der hinzufügen 3D-Array ist eine Art von Label.
M(:,:,1)= 0 0 0 M(:,:,2)= 0 0 1
1 0 1 0 0 0
0 0 0 0 1 0
Aber ich weiß nicht, wie N * N * 4 Array M
in s
und t
in labeledge(h,s,t,Labels)
konvertieren. s
sind die Indizes der Quellknoten, während t
die Indizes der Zielknoten sind.
Idealerweise ist dies die Handlung:
s = [2 2 1 3];
t = [1 3 3 2];
G = digraph(s,t);
figure;
h = plot(G);
die entscheidende Frage ist, wie ich s1, t1, s2 und t2 von M wie folgt zu erreichen:
labeledge(h,[2 2], [1 3], 'first label');
labeledge(h,[1 3], [3 2], 'second label');
FYI: M(:,:,1)
und M(:,:,2)
haben nicht die gleichen Nicht-Null-Einträge.
Sagen Sie es 100 ist, werden Sie 100 solcher Linien 'labeledge schreiben (h, [ 2 2], [1 3], "erstes Label"); '? Was ist dein Plan dafür? –
@Sardar Vielen Dank für Ihren Hinweis! Bearbeitet –
Warte, möchtest du auch die Adjazenzmatrix 'adj' von' M' bekommen? –