Servus liebe Matlab-Community, ich habe ein eigentlich extrem simples Problem, auf das ich aber bisher keine Lösung gefunden habe. Es geht um folgendes: ich will zwei Datenvektoren gegeneinander plotten, wobei mein x-Vektor allerdings doppelte Werte enthält (sieht etwa so aus: x=[0, 0.2, 0.4, 0.6, 0.8, 1, 0.8, 0.6, 0.4, 0.2, 0] )
Mein Problem ist jetzt, das matlab mit dem Plotbefehl nur einen x-Vektor von 0 bis 1 darstellt und dann den x-Werten doppelt y-Werte zugeordnet werden. Genau das will ich aber nicht, es soll einfach nur eine stupide x-Achse von 0 über 1 bis 0 dargestellt werden mit einem y-Wert pro x-Wert.
Wie erreiche ich das?
Es geht um folgendes: ich will zwei Datenvektoren gegeneinander plotten,
Du zeigst uns aber nur einen. Wo ist der zweite?
Zitat:
Mein Problem ist jetzt, das matlab mit dem Plotbefehl nur einen x-Vektor von 0 bis 1 darstellt und dann den x-Werten doppelt y-Werte zugeordnet werden.
Das verstehe ich nicht. Bitte poste den Code, so dass wir nachvollziehen zu können, was Du tust.
Zitat:
es soll einfach nur eine stupide x-Achse von 0 über 1 bis 0 dargestellt werden mit einem y-Wert pro x-Wert.
Möchtest Du die Beschriftung der X-Achse ändern? Dann sieh Dir mal "XLabel" des AXES-Objektes an.
Gruß, Jan
Gast
Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
Verfasst am: 09.05.2014, 11:52
Titel:
Die Werte vom y-Vektor sind eigentlich für das problem irrelevant, mann könnte sie einfach beliebig wählen, aber ich versuch nochmal anders zu erklären was ich will:
sagen wir ich habe einen y-Vektor [1,2,3]
und einen x-Vektor [0,1,0]
Ich will das ich es folgendermaßen dargestellt bekomme:
1 x.....
2.. x...
3 .....x
..0 1 0
Stattdessen plottet matlab automatisch folgendes:
1 x...
2 ...x
3 x..
..0 1
Dabei benutze ich nur den normalen plot-Befehl plot(x,y)
Das ist exakt das gewünschte Verhalten von PLOT. Du suchst ja nach einer Methode, y=[1,2,3] gegen den Vektor x=[0,1,2] zu zeichnen und eben nicht x=[0,1,0]. Der x-Vektor enthält ja die x-Koordinaten der Punkte. Woher könnte Matlab denn erraten, dass Du andere x-Koordinaten als die angegebenen haben möchtest?
Ich finde eine X-Achse mit nicht monoton-steigenden Werten zwar verwirrend und damit für wissenschaftliche Zwecke wahrscheinlich ungeeignet. Aber wie ich schon angedeutet habe, ist dies mit dem Setzen der Labels möglich:
Code:
x = [0,1,2];
y= [1,2,3];
axes('XLim', [0,2], 'XTick', x, 'XTickLabel', {'0', '1', '0'}, 'NextPlot', 'add');
plot(x, y, 'x');
Soll die Y-Achse wirklich in nach unten größere Werte enthalten? Dann versuche nochmal 'YDir' auf 'reverse' zu setzen.
Gruß, Jan
NureinGast
Gast
Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
Verfasst am: 11.05.2014, 01:09
Titel:
Nein, das mit der y-Achse war nur ein Fehler im Eifer des Gefechts.^^ Die x-Achse hat keine monoton steigenden Werte da es sich dabei um die Frequenzachse einer Fourier-Transformation handelt. Ich weiß, das Spektrum ist Achsensymmetrisch und man kann deshalb eine Hälfte auch weglassen, nur hat man so die Möglichkeit eventuelle Fehler, die bei der Transformation passiert sind, zu bemerken. Nur die Labels zu ändern wird da noch nicht ausreichen, da man ja auch den x- und y-Wert eines Punktes per klick ablesen können sollte und ich glaube das die Labels da nicht reichen. (Wenns doch so ist umso besser)
In dem Bild sind z.B. jedem x-Wert mindestens 2 aber meistens 4 Werte zugeordnet.
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.