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

plot & hold all

 

HMC

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 05.08.2010, 11:58     Titel: plot & hold all
  Antworten mit Zitat      
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
hold all;
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']);
 



Die ersten Signale sind kürzer als die zweiten - kann das der Grund sein?

Danke für Eure Hilfe!


HMC

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 05.08.2010, 12:01     Titel:
  Antworten mit Zitat      
ach ja, hab jeweils im plot-Befehl noch ein abs für jedes Signal gemacht...
 
boondock85
Forum-Anfänger

Forum-Anfänger


Beiträge: 25
Anmeldedatum: 08.12.08
Wohnort: Stuttgart
Version: 2007b
     Beitrag Verfasst am: 05.08.2010, 14:23     Titel:
  Antworten mit Zitat      
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');
 


dann wird alles auf einmal erstellt.
Außerdem kannst du dann mit:
Code:

legend({'Bezeichnung erster Vektor', 'Bezeichnung zweiter Vektor', 'usw'})
 

auch noch eine gute Legende erstellen?`!

Hilft das?
Private Nachricht senden Benutzer-Profile anzeigen
 
HMC

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 05.08.2010, 17:59     Titel:
  Antworten mit Zitat      
Hallo!

Da sagt er mir was von misformed...
Sieht der Befehl so aus:
Code:

plot(abs, sig1(:,1),'r', abs, sig1(:,2),'k')

für zwei Signale? oder gehören die ... mit rein?
 
HMC

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 05.08.2010, 18:00     Titel:
  Antworten mit Zitat      
Mist, entschuldigung...

s/abs/fax Wink
 
boondock85
Forum-Anfänger

Forum-Anfänger


Beiträge: 25
Anmeldedatum: 08.12.08
Wohnort: Stuttgart
Version: 2007b
     Beitrag Verfasst am: 05.08.2010, 18:15     Titel:
  Antworten mit Zitat      
HMC hat Folgendes geschrieben:

Sieht der Befehl so aus:
Code:

plot(abs, sig1(:,1),'r', abs, sig1(:,2),'k')



Also der Befehl ist im Prinzip so:

Code:

plot(x1, y1, 'k', x2, y2, 'b');
 


und du kannst es eben länger machen, in dem du ein Komma und dann eben wieder x, y, 'Farbe' einfügst.

die ,... bedeuten lediglich, dass es in der nächsten Zeile weitergeht!
was du mit s/abs/fax meinst weiß ich nicht?
gruß
Private Nachricht senden Benutzer-Profile anzeigen
 
hmc
Forum-Newbie

Forum-Newbie


Beiträge: 7
Anmeldedatum: 05.08.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 06.08.2010, 10:07     Titel:
  Antworten mit Zitat      
so, auch mal angemeldet Wink

s/abs/fax meint, dass man abs durch fax ersetzten soll. abs wäre etwas unsinnig da Wink
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!
Private Nachricht senden Benutzer-Profile anzeigen
 
boondock85
Forum-Anfänger

Forum-Anfänger


Beiträge: 25
Anmeldedatum: 08.12.08
Wohnort: Stuttgart
Version: 2007b
     Beitrag Verfasst am: 06.08.2010, 12:29     Titel:
  Antworten mit Zitat      
hmc hat Folgendes geschrieben:
so, auch mal angemeldet Wink

Willkommen Wink

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.

Gruß
Private Nachricht senden Benutzer-Profile anzeigen
 
hmc
Forum-Newbie

Forum-Newbie


Beiträge: 7
Anmeldedatum: 05.08.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 06.08.2010, 16:41     Titel:
  Antworten mit Zitat      
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...
Private Nachricht senden Benutzer-Profile anzeigen
 
hmc
Forum-Newbie

Forum-Newbie


Beiträge: 7
Anmeldedatum: 05.08.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 08.08.2010, 15:18     Titel:
  Antworten mit Zitat      
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?

Danke schonmal...
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: 08.08.2010, 19:13     Titel:
  Antworten mit Zitat      
Hallo HMC,

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:
Code:

AxesH = axes('NextPlot', 'add');
plot(1:10, 'b');
plot(2:20, 'r');
% Noch sicherer:
plot(3:23, 'g', 'Parent', AxesH);
 


Ich verstehe diesen Satz nicht:
Zitat:
Die ersten Signale sind kürzer als die zweiten - kann das der Grund sein?

Welche zweiten?

Du kannst übrigens auf eine Matrix zeichnen lassen:
Code:
plot(1:10, rand(4, 10))


Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
hmc
Forum-Newbie

Forum-Newbie


Beiträge: 7
Anmeldedatum: 05.08.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 08.08.2010, 20:04     Titel:
  Antworten mit Zitat      
so schaut das grad bei mir aus:


Code:

figure
         hold on;
         % axis([0 22050 0 10]);
         smo_len1 = length(mic_noise_fft_diff_smooth(:,1));
         smo_len1=smo_len1;
         fax=0:fs/(smo_len1):fs-fs/(smo_len1);
         plot(fax, abs(mic_noise_fft_diff_smooth(1:smo_len1,1)), '-r', fax, abs(mic_noise_fft_diff_smooth(1:smo_len1,2)), '-g', fax, abs(mic_noise_fft_diff_smooth(1:smo_len1,3)), '-y', fax, abs(mic_noise_fft_diff_smooth(1:smo_len1,4)), '-b');
%          plot(fax, abs(mic_noise_fft_diff_smooth(1:smo_len1,1)), '-r');
%          plot(fax, abs(mic_noise_fft_diff_smooth(1:smo_len1,2)), '-g');  , fax, abs(mic_noise_fft_diff_smooth(1:smo_len1,5)), '-m', fax, abs(mic_noise_fft_diff_smooth(1:smo_len1,6)), '-k', fax, abs(mic_noise_fft_diff_smooth(1:smo_len1,7)), '-c', fax, abs(mic_noise_fft_diff_smooth(1:smo_len1,Cool), '-r'
%          plot(fax, abs(mic_noise_fft_diff_smooth(1:smo_len1,3)), '-y');
%          plot(fax, abs(mic_noise_fft_diff_smooth(1:smo_len1,4)), '-b');
%          plot(fax, abs(mic_noise_fft_diff_smooth(1:smo_len1,5)), '-m');
%          plot(fax, abs(mic_noise_fft_diff_smooth(1:smo_len1,6)), '-k');
%          plot(fax, abs(mic_noise_fft_diff_smooth(1:smo_len1,7)), '-c');
%          plot(fax, abs(mic_noise_fft_diff_smooth(1:smo_len1,Cool), '-r');
         hold off;
         title(['Abweichungen der Rauschsignale bezogen auf Signal 1'],'Color','r');
       
         
    clear mic_noise_fft_diff_smooth;  
    clear mic_noise;
    clear mic_noise_fft;
    clear mic_noise_d;
    clear mic_noise_f;
   
   
    figure
         hold on;
         % axis([0 22050 0 10]);
         smo_len2 = length(sig_fft_cor_alias_smooth(:,1));
         smo_len2=smo_len2/2;
         fax=0:fs/(smo_len2):fs-fs/(smo_len2);
         plot(fax, abs(sig_fft_cor_alias_smooth(1:smo_len2,1)), '-r', fax, abs(sig_fft_cor_alias_smooth(1:smo_len2,2)), '-g', fax, abs(sig_fft_cor_alias_smooth(1:smo_len2,3)), '-y', fax, abs(sig_fft_cor_alias_smooth(1:smo_len2,4)), '-b');
%          hold on;
%          plot(fax, abs(sig_fft_cor_alias_smooth(1:smo_len2,2)), '-g');
%          hold on;
%          plot(fax, abs(sig_fft_cor_alias_smooth(1:smo_len2,3)), '-y');
%          hold on;
%          plot(fax, abs(sig_fft_cor_alias_smooth(1:smo_len2,4)), '-b');
%          plot(fax, abs(sig_fft_cor_alias_smooth(1:smo_len2,5)), '-m');
%          plot(fax, abs(sig_fft_cor_alias_smooth(1:smo_len2,6)), '-k');
%          plot(fax, abs(sig_fft_cor_alias_smooth(1:smo_len2,7)), '-c');
%          plot(fax, abs(sig_fft_cor_alias_smooth(1:smo_len2,Cool), '-r');
         hold off;
         title(['Frequenzbereich der korrigierten Signale'],'Color','r');

 



Zitat:

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...
Private Nachricht senden Benutzer-Profile anzeigen
 
hmc
Forum-Newbie

Forum-Newbie


Beiträge: 7
Anmeldedatum: 05.08.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 08.08.2010, 21:50     Titel:
  Antworten mit Zitat      
Hey Jan, mit den AxesH = axes('NextPlot', 'add'); geht aaa ned Sad

morgen weiteres...
Private Nachricht senden Benutzer-Profile anzeigen
 
boondock85
Forum-Anfänger

Forum-Anfänger


Beiträge: 25
Anmeldedatum: 08.12.08
Wohnort: Stuttgart
Version: 2007b
     Beitrag Verfasst am: 08.08.2010, 22:31     Titel:
  Antworten mit Zitat      
hmc hat Folgendes geschrieben:

Code:

figure
         hold on;
         % axis([0 22050 0 10]);
         smo_len1 = length(mic_noise_fft_diff_smooth(:,1));
         smo_len1=smo_len1; % <-- Hier ohne /2
         fax=0:fs/(smo_len1):fs-fs/(smo_len1);
   
           
    figure
         hold on;
         % axis([0 22050 0 10]);
         smo_len2 = length(sig_fft_cor_alias_smooth(:,1));
        smo_len2=smo_len2/2; % <-- hier mit /2
         fax=0:fs/(smo_len2):fs-fs/(smo_len2);
 



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.
Code:

 plot(fax, abs(mic_noise_fft_diff_smooth(1:smo_len1,1)), '-r',...
 fax, abs(mic_noise_fft_diff_smooth(1:smo_len1,2)), '-g',...
 fax, abs(mic_noise_fft_diff_smooth(1:smo_len1,3)), '-y',...
fax, abs(mic_noise_fft_diff_smooth(1:smo_len1,4)), '-b');



Zitat:
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?
Code:
plot(fax, abs(sig_fft_cor_alias_smooth(1:smo_len2,1)), '-r', fax, abs(sig_fft_cor_alias_smooth(1:smo_len2,2))+10, '-g', fax, abs(sig_fft_cor_alias_smooth(1:smo_len2,3))+20, '-y', fax, abs(sig_fft_cor_alias_smooth(1:smo_len2,4))+30, '-b');
legend({'Signal 1','Signal 2','Signal 3','Signal 4'});

Die hinzuaddierten Zahlen sollten halt eine Größenordnung haben, die dem Signal nahe kommt.
Private Nachricht senden Benutzer-Profile anzeigen
 
hmc
Forum-Newbie

Forum-Newbie


Beiträge: 7
Anmeldedatum: 05.08.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 09.08.2010, 11:28     Titel:
  Antworten mit Zitat      
Hi!

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?
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen

Gehe zu Seite 1, 2  Weiter

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 - 2025 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.