wie erzeugt man eine verschachtelte Struktur

4 次查看(过去 30 天)
Hallo,
ich habe folgende Strukturen, z.B.
p1=struct('x',1,'y',1,'nn',{{}})
p2=struct('x',4,'y',2,'nn',{{}})
p3=struct('x',3,'y',6,'nn',{{}})
und möchte im Feld 'nn' die k nächsten Nachbarn eines Punkts speichern. Mit welcher Datenstruktur bzw. verschachtelten Struktur kann man in Matlab diese Aufgabe am besten lösen. In Java oder C++ würde ich die Klasse Punkt definieren.
Vielen Dank!
Lisa

采纳的回答

Harald
Harald 2024-5-16
Hallo,
statt durchnumerierter Variablen würde ich eher ein Struct Array verwenden:
p(1)=struct('x',1,'y',1,'nn',{{}})
p(2)=struct('x',4,'y',2,'nn',{{}})
p(3)=struct('x',3,'y',6,'nn',{{}})
So oder so kann einem Feld einer Struktur wiederum eine Struktur zugewiesen werden, und so entsteht dann die gewünschte Verschachtelung.
p(1).nn = p(2)
bzw. bei deinem ursprünglichen Beispiel:
p1.nn = p2
Wenn dir Antworten weiterhelfen, bitte generell die Antworten "akzeptieren".
Viele Grüße,
Harald
  2 个评论
Elisabeth
Elisabeth 2024-5-21
Hallo Harald,
angenommen ich möchte m Punkte der Reihe nach von p_1 bis p_m definieren und p1 hat z.B. die Nachbarn p3 und p6. Zunächst lasse ich das Feld 'nn' leer, da alle Punkte m>1 nach p1 definiert werden. Später im Verlaufe irgendeines Algorithmus werden die Felder 'nn' der Punkte mit anderen Punkten gefüllt. Wenn MATLAB standardmäßig nach dem Prinzip copy-by-value arbeitet und es die Möglichkeit nicht gibt einen Alias zu definieren bleibt als (klassische, einzige vernünftige) Lösung in Matlab für diese Art von Anwendungsfall eine neue Klasse (z.B. Punkt) zu definieren, die von der Handle-Klasse erbt? Ist das richtig?
Vielen Dank für (zunächst) kostenfreie Onramp. Ich arbeite den Kurs durch aber ich möchte mir grundsätzlich klar machen wo ich bin. Gab es die Möglichkeit Klassen zu definieren in Matlab von Beginn an oder wurde die Option nachträglich hinzugefügt?
Vielen Dank!
Lisa
Harald
Harald 2024-5-21
Hallo Lisa,
ich denke auch, dass die Handle-Klasse da empfehlenswert ist, siehe auch
Mein Stand zur Historie: es gab schon länger die Möglichkeit Klassen zu definieren, ca. in 2012 wurde das aber grundlegend überarbeitet und in den Folgejahren allmählich erweitert.
Viele Grüße,
Harald

请先登录,再进行评论。

更多回答(0 个)

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!