wie erzeugt man eine verschachtelte Struktur

4 visualizaciones (últimos 30 días)
Elisabeth
Elisabeth el 15 de Mayo de 2024
Comentada: Harald el 21 de Mayo de 2024
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

Respuesta aceptada

Harald
Harald el 16 de Mayo de 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 comentarios
Elisabeth
Elisabeth el 21 de Mayo de 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 el 21 de Mayo de 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

Iniciar sesión para comentar.

Más respuestas (0)

Community Treasure Hunt

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

Start Hunting!