Clear Filters
Clear Filters

wie erzeugt man eine verschachtelte Struktur

1 view (last 30 days)
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

Accepted Answer

Harald
Harald on 16 May 2024
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 Comments
Elisabeth
Elisabeth on 21 May 2024
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 on 21 May 2024
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

Sign in to comment.

More Answers (0)

Community Treasure Hunt

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

Start Hunting!