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

Kurve einfärben entsprechend zugeordneter Werte

 

Tino97
Forum-Anfänger

Forum-Anfänger


Beiträge: 23
Anmeldedatum: 21.06.17
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 30.06.2017, 19:45     Titel: Kurve einfärben entsprechend zugeordneter Werte
  Antworten mit Zitat      
Hallo,
ich habe eine Reihe von Punkten im Raum durch x,y,z-Koordinaten gegeben, welche eine Kurve btw. einen Pfad bilden. Jedem Punkt ist ein Wert in Form einer Temperatur t zugeordnet.
x1 y1 z3 t1
x2 y2 z2 t2
.. .. .. ..
xn yn zn tn

Die Daten lasse ich über diesen code einlesen:
Code:
% Einlesen der Daten
fid = fopen('test.txt');
Rohdaten = textscan(fid, '%f %f %f %f %f', 'HeaderLines',1); %Einlesen von 4 Spalten ab Zeile 2
Werte = cell2mat(Rohdaten);                                                    
nr = Werte(:,1);    %Positionsnummer
x = Werte(:,2)';     %x-Koord.
y = Werte(:,3)';     %y-Koord.
z = Werte(:,4)';     %z-Koord.
t = Werte(:,4)';      %Temperatur
fclose(fid);
plot3(x,y, z)
axis equal
 


Ich möchte diese Kurve entsprechend der Temperaturen über eine Farbskala einfärben (rot= höchste Temperatur, blau=niedrigste Temperatur).
Hier finde ich jedoch keinen wirklichen Ansatz und weiß auch nicht so richtig wonach ich suchen soll.

Hat jemand vielleicht eine Idee?

test.txt
 Beschreibung:
Datenauszug

Download
 Dateiname:  test.txt
 Dateigröße:  283 Bytes
 Heruntergeladen:  305 mal
Private Nachricht senden Benutzer-Profile anzeigen


Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 03.07.2017, 21:38     Titel: Re: Kurve einfärben entsprechend zugeordneter Werte
  Antworten mit Zitat      
Hallo Tino97,

Ich würde zunächst mal im FileExchange nachschauen, wie andere das gelöst haben: https://www.mathworks.com/matlabcen.....ange?term=colored+line+3d . Da gibt es gleich zu Beginn einige schöne Methoden.

An sich ist es naheliegend, eine Schleife über die Abschnitte laufen zu lassen und die jeweilige Strecke per plot3 mitsamt dem 4. Input Argument für die Farbe zeichnen zu lassen.
Die Farbskala kannst Du als Colormap definieren und dem plot3 Befehl den jeweiligen RGB-Wert liefern.
Probiere es mal aus und frage bei Problemen wieder nach.

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
Tino97
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 23
Anmeldedatum: 21.06.17
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 05.07.2017, 20:09     Titel:
  Antworten mit Zitat      
Hallo Jan,

Deine Rückmeldung hat mir wirklich sehr geholfen. Das erste Suchergebnis "3D colored line plot" ist das was ich gesucht habe. Ich musste erst einmal herausfinden, dass dabei der code in eine function-Datei abgelgt werden muss aber am Ende hat es doch geklappt.


Code:

% colorierte Kurve
fid = fopen('test.txt');
Rohdaten = textscan(fid, '%f %f %f %f %f', 'HeaderLines',7);
Werte = cell2mat(Rohdaten);                                                    
nr = Werte(:,1);
x = Werte(:,2)';
y = Werte(:,3)';
z = Werte(:,4)';
t = Werte(:,5)';
color_line3(x,y,z,t,'LineWidth',20);   % plot3(x,y, z) durch Colorline-Funktion
xlabel('x'); ylabel('y'); zlabel('z');
hold on

% Objekt
fid = fopen('Objekt.txt');                                  % Öffnen der Objektdatei
OWerte= textscan(fid, '%f %f','HeaderLines', 1);     %Einlesen der Daten Zeile
OKoord= cell2mat(OWerte);                                  
tx=OKoord(:,1)'/10;                         %Spalte 1 mit x Koordinaten an px übergeben und transponieren, um Dimension einzuhalten
ty=OKoord(:,2)'/100;                        %Spalte 2 mit y Koordinaten an py übergeben und transponieren, um Dimension einzuhalten
fclose(fid);  
n=60;                                             % Anzahl der Segmente
m=(0:n)'*2*pi/n;                             %Umlaufkoordinate
surf(ones(n+1,1)*tx,cos(m)*ty,sin(m)*ty);                 % Ploten
shading interp                                  
colormap([0 0 0]);                                                        %Farbe des Objekts
 


Allerdings gibt es noch ein Problem, das ich nicht lösen konnte: Die Kurve lässt sich farbig ploten aber sobald ich einen einfarbigen surface-Plot hinzufügen möchte, nimmt auch die Kurve diese Farbe an.
Gibt es eine Möglichkeit dieses zu unterbinden?

Gruß
Tino

Objekt.txt
 Beschreibung:
Objektdaten

Download
 Dateiname:  Objekt.txt
 Dateigröße:  496 Bytes
 Heruntergeladen:  292 mal
test.txt
 Beschreibung:
Kurvendaten

Download
 Dateiname:  test.txt
 Dateigröße:  401 Bytes
 Heruntergeladen:  289 mal
color_line3.m
 Beschreibung:
colorline3 function

Download
 Dateiname:  color_line3.m
 Dateigröße:  1.13 KB
 Heruntergeladen:  287 mal
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 - 2024 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.