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

Varianz zeitgleich mit Durchschnittfkt. graphisch darstellen

 

Leja1902
Forum-Anfänger

Forum-Anfänger


Beiträge: 31
Anmeldedatum: 25.02.20
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 07.07.2020, 14:40     Titel: Varianz zeitgleich mit Durchschnittfkt. graphisch darstellen
  Antworten mit Zitat      
Hallo,

ich habe aus insgesamt 10 Datensätzen einen Durchschnittsdatensatz erstellt und geplottet. Ich möchte die dazugehörige Varianz gerne ebenfalls als Fläche plotten, damit man sehen kann welcher Teil des Signals besonders aussagekräftig ist (oder eben nicht).

"t301final" ist ein 5820x10 double, "DurchschnittT" ist ein 5820x1 Double.
Wenn ich den Befehl mit "area" ausgebe, wird nicht richtig geplottet. Woran könnte das liegen?

Code:

StdT=var(t301final,0,2)
StdT=mean(StdT,2);
StdT=StdT/2;
StdT1=DurchschnittT+StdT;
StdT2=DurchschnittT-StdT;
StandardT=area(StdT1, StdT2);
plot(t301final)
p=plot(StandardT)


Vielen Dank und liebe Grüße!

Capture.PNG
 Beschreibung:

Download
 Dateiname:  Capture.PNG
 Dateigröße:  79.22 KB
 Heruntergeladen:  167 mal
Private Nachricht senden Benutzer-Profile anzeigen


T16
Forum-Century

Forum-Century


Beiträge: 145
Anmeldedatum: 31.01.18
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 07.07.2020, 14:58     Titel:
  Antworten mit Zitat      
Code:
StandardT=area(StdT1, StdT2);
plot(t301final)
p=plot(StandardT)


Die letzte Zeile ist nicht nötig, der Befehl "area" ist bereits ein Plotbefehl. Er macht im Grunde nichts anderes als der plot-befehl, mit dem Unterschied, dass er die Fläche unter der Kurve bunt ausmalt.
Ich bin mir nicht sicher, ob das das ist was du willst. Möchtest du einen 3D-Graph plotten? In dem Fall wärst du mit surf() besser beraten.

Edit: Hab jetzt erst deinen Anhang gesehen, das geht mit dem fill-Befehl.
https://de.mathworks.com/help/matlab/ref/fill.html


VG
Thomas
Private Nachricht senden Benutzer-Profile anzeigen
 
Leja1902
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 31
Anmeldedatum: 25.02.20
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 07.07.2020, 15:19     Titel:
  Antworten mit Zitat      
Hallo Thomas,

super. Vielen Dank für deine Hilfe!

Mit
Code:
fill(StdT1,StdT2,'y');


müsste dann ja die Fläche dargestellt werden, korrekt?

Irgendwie setzt Matlab, das trotz "hold on" nicht um (Jedoch ohne Meldung eines Fehlercodes).

Liebe Grüße
Private Nachricht senden Benutzer-Profile anzeigen
 
T16
Forum-Century

Forum-Century


Beiträge: 145
Anmeldedatum: 31.01.18
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 07.07.2020, 15:33     Titel:
  Antworten mit Zitat      
Ich fürchte ganz so einfach ist es nicht, die beiden übergebenen Vektoren werden von Matlab als X-und Y-Werte eines Polygons interpretiert. Dabei ist auch die Reihenfolge der angegebenen Punkte wichtig.

Willst du beispielsweise ein Quadrat mit den Eckpunkten (0,0) (1,0) (1,1) und (0,1) mit fill plotten, sieht der Befehl so aus:

Code:
x=[0 1 1 0];
y=[0 0 1 1];
fill(x,y,[0 0 1]);

Das letzte Argument gibt die Farbe im RGB-Format an.
Ich laufe hier alle 4 Punkte über den Umfang ab, sobald ich diagonal springe wird aus dem Quadrat murks.

Das bedeutet für deinen Fall: Du musst erst deinen ersten Graph entlanglaufen (egal welchen) und anschließend deinen zweiten Graph rückwärts entlanggehen, damit das einfärben richtig klappt. (Du gehst also analog zu dem Viereck oben um deine Fläche drum herum.)
Hier ein Beispiel mit 2 Sinusfunktionen:

Code:
x=0:.1:2*pi;
y1=sin(x);
y2=sin(x)+1;

x=[x fliplr(x)];
y=[y1 fliplr(y2)];

fill(x,y,[0 0 1]);
Private Nachricht senden Benutzer-Profile anzeigen
 
Leja1902
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 31
Anmeldedatum: 25.02.20
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 07.07.2020, 15:58     Titel:
  Antworten mit Zitat      
***EDIT****
Ich habe grade gesehen, dass die beiden StdTx Daten ok sind. Die Funktion malt quasi über, bedeutet das, dass die Datenpunkte nicht ganz abgeschlossen sind?


***********


Leider hat es doch noch nicht ganz geklappt.. es wird folg. Flächenfüllung ausgegeben. Von den Eingaben her ist doch aber alles richtig, oder? Dann kann es nur an den Inhalten der StdT2 liegen, oder wie siehst du das?


Code:
x=(1:length(StdT1));
x=transpose(x);
x=[x fliplr(x)];
y=[StdT1 fliplr(StdT2)]
StandardT=fill(x,y, [0 1])
 


Liebe Grüße!

Capture.PNG
 Beschreibung:

Download
 Dateiname:  Capture.PNG
 Dateigröße:  53.59 KB
 Heruntergeladen:  178 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.448
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 07.07.2020, 17:37     Titel:
  Antworten mit Zitat      
Hallo,

macht der Vorschlag von T16 mit seinen Daten das gewünschte?
Falls nein, inwiefern nicht?
Falls ja, ist es ein Ratespiel für uns zu versuchen herauszufinden, wo nun der Unterschied zu deinen Daten ist, ohne deine Daten (oder zumindest ein Beispiel dafür) zu haben.

Grüße,
Harald
_________________

1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
Leja1902
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 31
Anmeldedatum: 25.02.20
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 07.07.2020, 22:44     Titel:
  Antworten mit Zitat      
Hallo Harald,

z.T. kommen die gewünschten Ergebnisse, aber die Fläche wird eben nicht zwischen den Beiden SdtTs ausgemalt, sondern zwischen StdT1 und der x-Achse.

Die Werte (ca. 6000 Datenpunkte) sind sehr klein und befinden sich immer zwischen um Werte knapp über Null. Ich habe in der Datei alle für diesen Vorgang wichtigen Variablen angefügt. - Nicht wundern, der x-Vektor ist meiner Var. Belegung nach als z benannt, enthält aber die gleichen Daten.

Vielen Dank für eure Hilfe!

StTV9.mat
 Beschreibung:

Download
 Dateiname:  StTV9.mat
 Dateigröße:  521.53 KB
 Heruntergeladen:  179 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
T16
Forum-Century

Forum-Century


Beiträge: 145
Anmeldedatum: 31.01.18
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 08.07.2020, 08:17     Titel:
  Antworten mit Zitat      
Die Dimensionen von x und y waren noch falsch. Beides sollten Spalten oder Zeilenvektoren sein, waren aber n x 2 - Matrizen. Damit sollte es klappen:

Code:
x=(1:length(StdT1));
x=[x fliplr(x)];
y=[StdT1' fliplr(StdT2')];
StandardT=fill(x,y, [0 0 1])
Private Nachricht senden Benutzer-Profile anzeigen
 
Leja1902
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 31
Anmeldedatum: 25.02.20
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 08.07.2020, 12:28     Titel:
  Antworten mit Zitat      
Es geht!!! Super, vielen, vielen Dank. Das hilft mir wirklich sehr für meine Bachelorarbeit. Smile
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 - 2024 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.