Verfasst am: 05.08.2010, 11:58
Titel: plot & hold all
Hallo,
wahrscheinlich eine gaaanz einfache Sache, nur bin ich wahrscheinlich zu blöd...
Ich habe 2 mal 8 Vektoren, die ich jeweils in eine figure plotten will. Bei den ersten acht geht das auch wunderbar, bei den zweiten acht funktioniert es bei den ersten zweien - danach überschreibt jeder neue plot.
im Prinzip hab ich sowas gemacht:
Code:
figure holdall;
len = length(sig1(:,1))/2;
fax=0:fs/len:fs-fs/len;
plot(fax,sig1(:,1),'r');
plot(fax,sig1(:,2),'b');
.
.
.
plot(fax,sig1(:,8),'k');
hold off;
title(['text']);
So müssten alle plots erstellt werden. Die X- und Y-Werte müssen aber jeweils die selbe Anzahl haben!
Code:
figure
len = length(sig1(:,1))/2;
fax=0:fs/len:fs-fs/len;
plot(fax,sig1(:,1),'r',...
fax,sig1(:,2),'b',...
%hier ist platz für weitere
fax,sig1(:,8),'k');
s/abs/fax meint, dass man abs durch fax ersetzten soll. abs wäre etwas unsinnig da
also, mit Kommas getrenntb macht er bei mir nicht. Werds mir aber nachher nochmal genau anschauen, ich bin noch nicht dazu gekommen.
Auf jeden Fall schonmal vielen Dank!
also schau mal in der Matlab-Hilfe unter Plot. Da steht:
Matlab-Hilfe hat Folgendes geschrieben:
plot(X1,Y1,...,Xn,Yn) plots each vector Yn versus vector Xn on the same axes. If one of Yn or Xn is a matrix and the other is a vector, plots the vector versus the matrix row or column with a matching dimension to the vector. If Xn is a scalar and Yn is a vector, plots discrete Yn points vertically at Xn. If Xn or Yn are complex, imaginary components are ignored. plot automatically chooses colors and line styles in the order specified by ColorOrder and LineStyleOrder properties of current axes.
plot(X1,Y1,LineSpec,...,Xn,Yn,LineSpec) plots lines defined by the Xn,Yn,LineSpec triplets, where LineSpec specifies the line type, marker symbol, and color. You can mix Xn,Yn,LineSpec triplets with Xn,Yn pairs: plot(X1,Y1,X2,Y2,LineSpec,X3,Y3).
Das heißt halt einfach, dass man in einem Fenster direkt mehrere Plots erstellen kann und das ist ja das was du möchtest? Ansonsten formulier deine Frage erneut, weil dann hab ich sie falsch verstanden!
Die ... in dem ersten Plot sind wieder nur Lückenfüller.
Jaaa, das ist mal wieder so ein Problem, bei dem Matlab nicht das tut, was es soll. Im Prinzip muß das mit dem hold ja auch funktionieren, tuts aber nicht. Ich werd jetzt nochmal etwas rumspielen und es dann nochmal laufen lassen. Mal sehen...
soooo... Er rechnet das jetzt durch, ohne dass er Sperenzien macht. Leider zeigt er mir die plots nach wie vor nicht sondern überschreibt sie.
Gibts da irgendeine ähnliche Lösung?
kannst Du uns noch mal zeigen, wie Dein aktueller Code aussieht?
Du kannst statt "hold all" auch manuell ein AXES-Objekt erstellen und dabei "NextPlot" auf "add" setzen:
Ich verstehe diesen Satz nicht:
Zitat:
Die ersten Signale sind kürzer als die zweiten - kann das der Grund sein?
Welche zweiten?
length(mic_noise_fft_diff_smooth) ist einiges kleiner als length(sig_fft_cor_alias_smooth);
Nochmal zum Verständnis: die beiden Figures und zugehörigen Plots sind durch copy/paste entstanden, sollten also ident sein bis - natürlich - auf die darzustellenden Signale.
Die erste figure enthält das, was sie soll (mehrere - insg. 8, wenns voll durch läuft Signale), die zweite überschreibt sich selber...
mir fällt auf, dass wenn du sagst du hättest mit copy&paste erstellt, dass du einmal beim Erstellen der Frequenzachse /2 und einmal nicht rechnest?!
Das "hold on" brauchst du nicht, wenn du in einem plot befehl alles schreibst.
So war das mit dem ",...". Da wird halt gleich erkannt wieviele Daten du plotten willst.
Die erste figure enthält das, was sie soll (mehrere - insg. 8, wenns voll durch läuft Signale), die zweite überschreibt sich selber...
dazu ne blöde Frage: Sind evtl in dem "sig_fft_cor_alias_smooth" einfach gleiche daten? Weil dann könnte ja nur die letzte Signalreihe sichtbar sein?
Zum Test plotte mal folgendes und füge eine Legende ein?
Das mit dem smo_len/2 ist der Länge der Signale verschuldet - das eine Mal hab ich das beim erstellen gemacht, das andere Mal mach ich das erst beim Plot. Bin mir da einfach noch nicht sicher, wie ich das machen will.
Die einzelnen Plots werd ich gleich mal zueinander verschieben, aber sie sind doch etwas unterschiedlich - optimaler Weise mit möglichst kleinen Abweichungen - aber ich fürchte, dass die nicht wirklich zu sehen sind, wenn sie relativ zueinander verschoben gedruckt sind...
Vielleicht bau ich mir die Differenzen der Signale und zeig die an...
Eine andere Frage: wenn ich in einer Schleife drucke und zwei verschiedene Figures hab, dann müsset ich doch mit figure(1) und figure(2) und hold on in die jeweiligen reinplotten können. Kann ich da die Farben irgendwie mit der Laufvariablen ändern?
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.