Das Problem ist jedoch, dass ich dies in 2D brauche und eine Legende mit den jeweiligen Werten aus der dritten Spalte meiner Matrix sollte ebenfalls vorhanden sein. Bei dem Code blicke ich aber auch nicht zu 100% durch.
Falls da jemand weiterhelfen könnte wäre ich sehr dankbar (muss sich nicht unbedingt auf den Beispielcode beziehen, neue Ansätze wären auch schön).
Was verstehst Du am Code genau nicht? Konkrete Fragen lassen sich viel einfacher beantworten.
Wenn man
plot
statt
plot3
nimmt, sollte ein 2D-Diagramm machbar sein.
Dass ich mit der normalen plot Funktion einen 2D Plot erstelle, ist mir klar. Mir geht nur nicht ein, wie ich meine dritte Größe da mit einbeziehen kann.
Ich will gewisse Werte über der Zeit plotten, das ist ja gar kein Problem. Nun will ich aber die Punkte je nach Größe der Werte (die in einem zusätzlichen dritten Vektor stehen, die ich aber nicht im Diagramm darstellen will) einfärben.
Auf mein Problem bezogen, wäre der Skalierungsfaktor alpha eine "Funktion" der Zeit und der Skalierungsfaktor beta hängt dann von den Werten, die ich darstelle ab.
Jedoch soll die Farbe nur durch Werte aus einem dritten Vektor beeinflusst werden. Streiche ich die Faktoren alpha und beta weg, so werden meine Punkte von hellgrün bis dunkelgrün eingefärbt (was ja auch logisch ist, weil die zusätzliche Info fehlt) und die Legende, die die Farbe und die Werte anzeigen soll, schreibt einfach "Datenpunkt 1, Datenpunkt 2" usw raus.
Hier stehe ich gerade etwas auf der Leitung.
Mein "Vekt2" ist derjenige, den ich auf der y-Achse darstelle und "Vekt3" ist mein dritter Vektor, nach dem gefärbt werden soll.
Ich normiere meinen dritten Vektor, sodass ich nur Werte zwischen null und eins bekomme. Wenn die Werte größer als ein definierter Wert sind, färbt er sie demnach rot oder blau ein.
wenn die Daten mal Tausende Punkte enthalten, wird hier für jeden Punkt eine eigene Linie angelegt. Das ist keine gute Idee und kann mit logischer Indizierung vermieden werden:
Code:
Vekt3_norm = (Vekt3 - Vekt3_min) / (Vekt3_max - Vekt3_min);
red = Vekt3_norm >= 0.5;
plot(time(red), Vekt2(red), 'ro');
hold on
plot(time(~red), Vekt2(~red), 'bo');
hold off
meine Vektoren haben tatsächlich mehr als 100,000 Einträge. Ich bin gerade so in meinem while-Schleifen-Denken, dass ich auf die Einfachheit von Matlab gerne vergesse.
Auf die Art kann ich auch meine Legende perfekt einfügen.
Danke
Einstellungen und Berechtigungen
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.