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

stem und plot überlagern?

 

bandchef
Forum-Anfänger

Forum-Anfänger


Beiträge: 48
Anmeldedatum: 13.11.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 09.10.2013, 16:29     Titel: stem und plot überlagern?
  Antworten mit Zitat      
Hi Leute!

Ich hab diesen Code:

Code:

close all; clear;

%a = randi(10,1,10);   %Vektor mit 5 zufälligen Integer-Elementen
a = rand(1,10); %Vektor mit 10 zufälligen Elementen

figure
stem(a); %gibt Vektor als 2D-Graph aus
hold on;

a_Std = std(a); %Standardabweichung
a_Mean = mean(a);   %Mittelwert
plot(a_Std,a_Mean);
 



Der Code soll folgendes machen: Einen Vektor mit 10 zufälligen Werten erzeugen aus den zufälligen Werten die Standardabweichung sowie den Mittelwert berechnen. Die zufälligen Werte sollen als diskrete Werte über stem() geplottet werden.

DANACH soll der berechnete Mittelwert bzw. Standardabweichung eine Art Korridor um den Mittelwert a_Mean +/- der Standardabweichung a_Std im Plotfenster einzeichnen, der mit stem() ausgegeben wurde.

Ehrlich gesagt scheitere ich da grad ein wenig...
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 09.10.2013, 16:50     Titel:
  Antworten mit Zitat      
Hallo,

wie soll der Korridor aussehen?
Zwei horizontale Linien, die den Bereich
a_mean +/- a_std begrenzen?

Dein momentaner Plot-Befehl zeichnet jedenfalls nur einen einzigen Punkt.

Vielleicht kannst du ja mal eine Grafik machen, wie das dann aussehen soll.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Kascho
Forum-Century

Forum-Century


Beiträge: 195
Anmeldedatum: 24.03.10
Wohnort: Jena
Version: R2008b ... :(
     Beitrag Verfasst am: 09.10.2013, 18:43     Titel:
  Antworten mit Zitat      
hallo bandchef,
ich vermute mal:

Code:

figure
stem(a);
hold on;
plot(1:length(a),mean(a));
plot(1:length(a),mean(a)+std(a));
plot(1:length(a),mean(a)-std(a));
 


Hab grad kein matlab zum testen. Sinnvoll wäre in diesem Zusammenhang sicherlich auch:

Code:


Gruß, kascho
Private Nachricht senden Benutzer-Profile anzeigen
 
bandchef
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 48
Anmeldedatum: 13.11.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 10.10.2013, 14:44     Titel:
  Antworten mit Zitat      
Harald hat Folgendes geschrieben:
Hallo,

wie soll der Korridor aussehen?
Zwei horizontale Linien, die den Bereich
a_mean +/- a_std begrenzen?

Dein momentaner Plot-Befehl zeichnet jedenfalls nur einen einzigen Punkt.

Vielleicht kannst du ja mal eine Grafik machen, wie das dann aussehen soll.

Grüße,
Harald


Ja genau. Es sollen quasi zwei horizontale Linien eingezeichnet werden.





Kascho hat Folgendes geschrieben:
hallo bandchef,
ich vermute mal:

Code:

figure
stem(a);
hold on;
plot(1:length(a),mean(a));
plot(1:length(a),mean(a)+std(a));
plot(1:length(a),mean(a)-std(a));
 


Hab grad kein matlab zum testen. Sinnvoll wäre in diesem Zusammenhang sicherlich auch:

Code:


Gruß, kascho


Ja, genau das geht schon in die Richtung, nur leider werden nun nur kleine Pünktchen angezeigt. Ich möchte aber eine durchgehende Linie!




Ich hab mir jetzt mal noch selber Gedanken gemacht:
Code:
plot([0,a_Std],[10, a_Std]);


Leider bekomme ich da nur eine sehr schräge Linie, obwohl doch der Anfangspunkt und Endpunkt der Linie so richtig definiert sein sollte, oder?[/code][/quote]
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 10.10.2013, 15:09     Titel:
  Antworten mit Zitat      
Hallo,

was meines Erachtens noch schön aussehen würde:
Code:
up = a_Mean + a_Std;
low = a_Mean - a_Std;
patch([1 length(a) length(a) 1 1], [low low up up low], [0 0 0.5], 'FaceAlpha', 0.4)


Zu Kaschos Vorschlag:
Code:
plot([1 length(a)], [up up])
plot([1 length(a)], [low low])


Bei deinem eigenen Vorschlag hast du gerade x- und y-Werte durcheinandergewürfelt.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
bandchef
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 48
Anmeldedatum: 13.11.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 10.10.2013, 15:15     Titel:
  Antworten mit Zitat      
Wenn ich die x y Werte aber umtausche, bekomme ich auch nicht da was ich will:
Code:
plot([a_Std,1],[a_Std, 10]);


Was ist daran noch falsch?
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 10.10.2013, 15:39     Titel:
  Antworten mit Zitat      
Hallo,

bitte selbst ein wenig überlegen, dann sollte man darauf kommen - vor allem, weil es direkt aus meinem zweiten Code-Vorschlag abgeleitet werden kann.

Es heißt plot(x,y). x sind also alle x-Werte, y alle y-Werte.

Du willst zwei Punkte, (1, a_std) und (length(a), a_std).
Die x-Werte sind also [1, length(a)]
Die y-Werte sind also [a_Std, a_Std]
Der Befehl wäre also:
Code:
plot([1, length(a)], [a_Std, a_Std])

wobei das eine horizontale Linie mit y = a_Std ist. Du wolltest aber horizontale Linien mit a_Mean +/- a_Std. Dann wären wir wieder bei meinem zweiten Vorschlag.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
bandchef
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 48
Anmeldedatum: 13.11.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 10.10.2013, 15:42     Titel:
  Antworten mit Zitat      
Danke, jetzt hab ich verstanden! Das hab ich irgendwie aus der Beschreibung von matlab selbst nicht rausgelesen, dass man die x,y-Werte gruppieren muss!

Ich habs nun so gecoded:
Code:
plot([1, length(a)],[a_Mean-a_Std, a_Mean-a_Std]);
plot([1, length(a)],[a_Mean+a_Std, a_Mean+a_Std]);
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen



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.