WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Visualisierung von 3D-Informationen auf 2D-EBene

 

Tony_Silva2
Forum-Anfänger

Forum-Anfänger


Beiträge: 35
Anmeldedatum: 15.07.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 15.07.2014, 15:36     Titel: Visualisierung von 3D-Informationen auf 2D-EBene
  Antworten mit Zitat      
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.

Hoffe mir kann geholfen werden Smile
Private Nachricht senden Benutzer-Profile anzeigen


Nras
Forum-Meister

Forum-Meister


Beiträge: 608
Anmeldedatum: 21.02.12
Wohnort: ---
Version: 7.12.0.635 (R2011a)
     Beitrag Verfasst am: 16.07.2014, 08:13     Titel:
  Antworten mit Zitat      
Hallo,

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.

Viele Grüße,
Nras.
Private Nachricht senden Benutzer-Profile anzeigen
 
Tony_Silva2
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 35
Anmeldedatum: 15.07.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 22.07.2014, 08:53     Titel:
  Antworten mit Zitat      
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:

Code:

plot3(breite,laenge,dZeta,'o');
title('Höhendifferenzen');
 
Private Nachricht senden Benutzer-Profile anzeigen
 
Nras
Forum-Meister

Forum-Meister


Beiträge: 608
Anmeldedatum: 21.02.12
Wohnort: ---
Version: 7.12.0.635 (R2011a)
     Beitrag Verfasst am: 22.07.2014, 09:37     Titel:
  Antworten mit Zitat      
Hallo,

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.

Viele Grüße,
Nras.
Private Nachricht senden Benutzer-Profile anzeigen
 
Tony_Silva2
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 35
Anmeldedatum: 15.07.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 22.07.2014, 10:11     Titel:
  Antworten mit Zitat      
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
 

Jetzt werden die Punkte ja über das 'o' blau eingefärbt. Wie kann ich schaffen, dass die Punkte unterschiedliche Farben bekommen?
Private Nachricht senden Benutzer-Profile anzeigen
 
Nras
Forum-Meister

Forum-Meister


Beiträge: 608
Anmeldedatum: 21.02.12
Wohnort: ---
Version: 7.12.0.635 (R2011a)
     Beitrag Verfasst am: 22.07.2014, 10:48     Titel:
  Antworten mit Zitat      
Hallo,

wieso hast du dich von der Idee, das mit einer surf()-Darstellung zu machen, verabschiedet?

Dein Vorhaben kannst du mit der option 'MarkerFaceColor' setzen. Zuvor musst du dir eine colormap bauen oder eine fertige holen:
Code:
% Daten
N = 384;
breite = rand(N,1);
laenge = rand(N,1);
dZeta = rand(N,1)*100;
c = linspace(min(dZeta),max(dZeta),30);

% graphik
figure
hold on
cmap = colormap(jet(30));
for i = 1:384
    farbe_idx = find(dZeta(i,1) <= c, 1, 'first');
    farbe = cmap(farbe_idx, :);
    plot3(breite(i,1),laenge(i,1),dZeta(i,1),'o', 'markerfacecolor',farbe);
end


Viele Grüße,
Nras.
Private Nachricht senden Benutzer-Profile anzeigen
 
Tony_Silva2
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 35
Anmeldedatum: 15.07.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 22.07.2014, 11:11     Titel:
  Antworten mit Zitat      
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.

Kann man das noch schnell ändern?
Private Nachricht senden Benutzer-Profile anzeigen
 
Nras
Forum-Meister

Forum-Meister


Beiträge: 608
Anmeldedatum: 21.02.12
Wohnort: ---
Version: 7.12.0.635 (R2011a)
     Beitrag Verfasst am: 22.07.2014, 11:51     Titel:
  Antworten mit Zitat      
Hallo,

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:
Code:
cbar = colorbar;
yticks = get(cbar,'Ytick');
set(cbar,'YTickLabel', {num2str(c(yticks)', '%4.1f')})

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....

Viele Grüße,
Nras.
Private Nachricht senden Benutzer-Profile anzeigen
 
Tony_Silva2
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 35
Anmeldedatum: 15.07.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 22.07.2014, 12:26     Titel:
  Antworten mit Zitat      
Besten Dank.
Sieht spitze aus!!
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

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
.





 Impressum  | Nutzungsbedingungen  | Datenschutz | FAQ | goMatlab RSS Button RSS

Hosted by:


Copyright © 2007 - 2025 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks

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.