Verfasst am: 15.07.2014, 15:36
Titel: Visualisierung von 3D-Informationen auf 2D-EBene
Hallo,
mein erster Beitrag als absoluter Matlab-Anfänger. Daher brauche ich auch ein bißchen Hilfe. Hier also meine Frage:
Ich habe eine Matrix mit fast 400 Zeilen. In der ersten Spalte befindet die x-Komponente eines Punktes, in der zweiten die y-Komponente und in der dritten die z-Komponente. Jetzt möchte ich aus diesen 3D-Punkten über eingefärbte Flächen eine flächendeckende Visualisierung in der xy-Ebene erzeugen.
Das ganze müsste ja über Interpolation zu lösen sein. Ergebnis soll sein, dass der Betrachter der Grafik eine Übersicht über die Höhenverläufe in der 2D-Ebene gewinnt.
in diesem Beispiel hier ist eigentlich alles erklärt: http://www.gomatlab.de/beispiel-sur.....g-von-xyz-daten-t623.html. Der einzige Unterschied ist der Anfang, da hast du eine Matrix mit 3 Spalten und hier wird bereits mit 3 einzelnen Vektoren angefangen. Das sollte aber keine Hürde sein.
Falls die x und y Koordinaten deiner Daten schon auf einem regelmäßigen Gitter vorliegen, kannst du den Teil mit griddata() bzw. interp2() weglassen und durch geeignete Umsortierung mit reshape() die Daten in das passende Format pressen.
Danke. Eine Darstellung der Punkte habe ich erreicht. Da die z-Komponente Höhendifferenzen darstellt, würde ich diese gerne farblich unterscheiden können. Wie kann ich das erreichen?
Mein Code sieht bisher so aus:
wenn du den Teil mit dem surf()-Befehl auch noch machst, kriegst du bereits eine flächige Darstellung mit Farbkodierung.
Ansonsten musst du jeden Punkt einzeln mit plot3() plotten und die Farbe entsprechend des z-Wertes selber setzen.
Von der flächenhaften Darstellung habe ich mich schon verabschiedet. Möchte jetzt einfach die Punkte darstellen und anhand ihrer Höhendifferenzen in unterschiedlichen Farben visualisieren.
Wenn ich jeden Punkt einzelnd über plot3 einlesen muss, dann mache ich das ja wahrscheinlich am besten über eine for-schleife.
Code:
load Koord_getrennt.mat;
figure hold on
for i=1:384 plot3(breite(i,1),laenge(i,1),dZeta(i,1),'o');
end
Super. Besten Dank. Das sieht schon mal hervorragend aus.
Jedoch will ich die colorbar noch so einrichten, dass die Beschriftung der colorbar den Höhenwerten entspricht. Also dass bei den roten Werten nicht die Zahl 30 steht, sondern der maximale Höhenwert und das ganze natürlich auch für das Minimum.
ich weiß nicht, ob der ganze Ansatz dann komisch ist (mit den 30 verschiedenen Farben) und es viel besser geht, aber das kann man auf die Schnelle so hinbiegen:
Dabei steht das '%4.1f' für das Format. Hier sind es 4 Zeichen insgesamt, davon ist ein Zeichen für den Dezimalpunkt und ein Zeichen für die Stelle danach. Damit bleiben 2 Stellen für die Werte vor dem Dezimalpunkt, was für dieses Beispiel gut passt).
Wenn du die Fließkommazahlen in der colorbar in dem Fall auch so störend findest wie ich, müsstest du noch etwas rumexperimentieren....
Du kannst Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen. Du kannst Dateien in diesem Forum posten Du kannst Dateien in diesem Forum herunterladen
MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.