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.
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.
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([000]); %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?
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.