wie erzeugt man eine verschachtelte Struktur

조회 수: 4 (최근 30일)
Elisabeth
Elisabeth 2024년 5월 15일
댓글: Harald 2024년 5월 21일
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!