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

Standardabweichung mit Hilfe einer Schleife berechnen

 

Ines Ebner
Forum-Anfänger

Forum-Anfänger


Beiträge: 21
Anmeldedatum: 09.04.20
Wohnort: Jena
Version: ---
     Beitrag Verfasst am: 09.04.2020, 12:19     Titel: Standardabweichung mit Hilfe einer Schleife berechnen
  Antworten mit Zitat      
Hallo,

ich will mich gerade in Matlab einarbeiten. Insgesamt will ich die Standardabweichung berechnen dazu dachte ich muss ich zuerst einmal den Mittelwert und später dann die Varianz.

Ich habe eine Matrix mit M 146 x11 und würde gerne davon die ersten 50 Werten nutzen um den Mittelwert zu berechnen und dann eine 1x11 Variable bekommen die mir den Mittelwert angibt von den ersten 50 Werten, aber nicht mit dem Befehl Mean sondern ich würde gerne das in einer Schleife aufbauen.

Könnt ihr mir bitte Helfen?
bisher habe ich nur das hinbekommen

Code:

summe=0;

for i=1:50
    summe = summe+M(i)

end

Mittelwert = summe/i
 



bin um jede Hilfe sehr sehr Dankbar
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: 09.04.2020, 12:32     Titel:
  Antworten mit Zitat      
Hallo,

Code:
summe = summe+M(i,:); % i-te Zeile


Generell kann ich nur empfehlen, die vorhandenen Funktionen zu nutzen. Größere Herausforderungen kommen dann meist noch früh genug. ;)

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
 
Ines Ebner
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 21
Anmeldedatum: 09.04.20
Wohnort: Jena
Version: ---
     Beitrag Verfasst am: 09.04.2020, 13:03     Titel: versuch mit der Varianz
  Antworten mit Zitat      
Hallo,

jetzt versuche ich das ganze noch mit der Varianz und Stoße an meine Grenzen.
bei der Varianz subtrahiert man von jedem Datenpunkt den Mittelwert und quadriert diesen Wert. Dies will ich auch für die ersten 50 meiner Matrix.

mein Versuch der noch nicht funktioniert. Ich hab ein generelles Problem mit dem arbeiten von Matrizen, dass ich nicht weiß wie es geht das ich sagen kann das jeder Datenpunkt genommen werden soll und davon der Mittelwert abgezogen werden soll. Ich weiß das ist wahrscheinlich ein Forum zum austauschen und ich weiß mir fehlt es zur zeit an Verständnis und freu mich darüber wenn mir jemand was dazu erklärt.

also mein Versuch:
Code:

varianz=0;

for i=1:50
    varianz = (M(i,:)-Mittelwert).^2);
end

 
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: 09.04.2020, 13:40     Titel:
  Antworten mit Zitat      
Hallo,

soweit gut.
Zitat:
dass ich nicht weiß wie es geht das ich sagen kann das jeder Datenpunkt genommen werden soll und davon der Mittelwert abgezogen werden soll.

Der Teil stimmt bereits.

Es fehlt nur noch das Summieren und Dividieren, ähnlich wie du es schon bei der Berechnung der Mittelwerte gemacht hast.
Ich kann's dir natürlich hinschreiben, aber ich glaube, es bringt dir letztlich mehr, wenn du es selbst schaffst.

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
 
Ines Ebner
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 21
Anmeldedatum: 09.04.20
Wohnort: Jena
Version: ---
     Beitrag Verfasst am: 09.04.2020, 14:05     Titel:
  Antworten mit Zitat      
ja ich will das gerne lernen aber hab echt meine Schwierigkeiten und ich hätte echt gerne Nachhilfe aber das ist zur Zeit schwierig.

bei meinem Mittelwert habe ich das problem das ich in meiner Matrix Datenpunkte habe die mit NaN gekennzeichnet sind. und in der funktion habe ich gelernt 'omitnan' zu verwenden, gibt es sowas auch für die Schleife? weil das ist glaube ich gerade ein Problem für meine Varianzschleife das funktioniert nicht so richtig.

Code:

n=1;
summe=0;

for i=1:50
    summe = summe +  M(i,:)
end
Mittelwert = summe/i


varianz=0;

for i=1:50
   varianz = M(i,:) - Mittelwert
   varianz = varianz.^2
   
end

varianzwert = varianz/i
 


ich hab somit dann noch nicht verfügbare werte in meinern mittelwert und varianzwert vektoren...

muss ich dann der schleife sagen, dass wenn der wert nicht verfügbar ist soll er den überspringen?
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: 09.04.2020, 14:37     Titel:
  Antworten mit Zitat      
Hallo,

jetzt hast du das Dividieren drin, aber das Summieren fehlt noch.

varianz = varianz + (M(i,:)-Mittelwert).^2;

Zitat:
in der funktion habe ich gelernt 'omitnan' zu verwenden, gibt es sowas auch für die Schleife?

Ja, aber wird aufwändiger, weil du nicht nur die Abfrage brauchst, sondern auch die gültigen Werte mitzählen musst. Das würde ich mir nicht händisch antun.

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
 
Ines Ebner
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 21
Anmeldedatum: 09.04.20
Wohnort: Jena
Version: ---
     Beitrag Verfasst am: 09.04.2020, 19:04     Titel:
  Antworten mit Zitat      
doch ich brauch das denke ich auch für später. Ich muss mir gerade von null auf ein skript basteln. ich versuche es jetzt mal in der schleife zu prüfen.

Der Plan ist es später den RMSSD in matlab zu berechnen und dafür brauche ich diese bausteine von Mittelwert und Standardabweichung.

ich könnte echt Hilfe gebrauchen... Confused
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: 09.04.2020, 19:35     Titel:
  Antworten mit Zitat      
Hallo,

ich halte es nicht für sinnvoll, Mittelwert oder Varianz händisch zu berechnen. Es gibt die Funktionen in MATLAB gerade, damit nicht jeder das Rad neu erfinden muss.

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
 
Ines Ebner
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 21
Anmeldedatum: 09.04.20
Wohnort: Jena
Version: ---
     Beitrag Verfasst am: 10.04.2020, 11:42     Titel:
  Antworten mit Zitat      
ok. ja das verstehe ich. Hast jemand dann eine Idee für mich wie ich dann diese Formel (im Bildanhang) umsetzten kann in Matlab? in der ich dann auch die nan werte überspringe. Weil ich habe genug Datenpunkte.

LG

Bildschirmfoto 2020-04-10 um 11.37.52.png
 Beschreibung:

Download
 Dateiname:  Bildschirmfoto 2020-04-10 um 11.37.52.png
 Dateigröße:  10.15 KB
 Heruntergeladen:  192 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: 10.04.2020, 11:55     Titel:
  Antworten mit Zitat      
Hallo,

ich gehe davon aus, dass RR ein Vektor ist (keine Matrix)?

Da gibt es noch eine Interpretationsfrage: soll im Falle von NaN die Differenz zwischen den nächstgelegenen Werten genommen werden oder das komplett übersprungen werden? Beispiel:
Code:
v = [1, 2, NaN, NaN, 5, 11];
erg1 = [1, 3, 6]; % 2 und 5 sind nebeneinander, wenn man die NaN weglässt
erg2 = [1, 6];


Im Fall von erg2:
Code:
RMSSD = sqrt( 1/(length(RR)-1) * sum( diff(RR).^2, 'omitnan') )


Im Fall von erg1: zunächst rmmissing anwenden, dann Berechnung wie eben. 'omitnan' ist dann nicht mehr nötig.

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
 
Ines Ebner
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 21
Anmeldedatum: 09.04.20
Wohnort: Jena
Version: ---
     Beitrag Verfasst am: 10.04.2020, 12:16     Titel:
  Antworten mit Zitat      
Hallo,

ich gehe davon aus, dass RR ein Vektor ist (keine Matrix)?

--> nein es wird weiterhin eine Matrix bleiben ich habe unterschiedliche Parameter die ich mit diesem Variabilitätsmaß prüfen will um zu sehe ob das Funktioniert auch für das Anwendungsgebiet funktioniert.

Da gibt es noch eine Interpretationsfrage: soll im Falle von NaN die Differenz zwischen den nächstgelegenen Werten genommen werden oder das komplett übersprungen werden?


-->mit komplett übersprungen meinst du das die angrenzenden Werte auch weggelassen werden? und beim überspringen der wert dann von dem nächst möglichen berechnet wird. oder wie?

Danke schonmal,
Grüße Ines
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: 10.04.2020, 12:31     Titel:
  Antworten mit Zitat      
Hallo,

Zitat:
es wird weiterhin eine Matrix bleiben

Soll RMSSD dann spaltenweise berechnet werden? Dann würde ich eine for-Schleife über die Spalten empfehlen.

Das Beispiel sollte den Umgang mit NaN doch klar veranschaulichen. Kurz gesagt: willst du erg1 oder erg2?

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
 
Ines Ebner
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 21
Anmeldedatum: 09.04.20
Wohnort: Jena
Version: ---
     Beitrag Verfasst am: 10.04.2020, 12:46     Titel:
  Antworten mit Zitat      
Ja jetzt hab ich das verstanden. Ich denke es sind sogar beide Varianten möglich würde mich aber sicherheitshalber für Ergebnis 2 entscheiden da ich weiterhin nur über 50 Datenpunkte das berechnen will und ich genug habe.

Ja genau der RMSSD soll Spaltenweise berechnet werden.


Grüße und herzlichen Dank für deine hilfsbereitschaft
Private Nachricht senden Benutzer-Profile anzeigen
 
Ines Ebner
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 21
Anmeldedatum: 09.04.20
Wohnort: Jena
Version: ---
     Beitrag Verfasst am: 10.04.2020, 13:04     Titel:
  Antworten mit Zitat      
Hallo,

noch eine Frage, was passiert bei rmmissing, wenn ich die lösche kann ich dann auch die ganze Zeile löschen in der ein NaN auftaucht?

Liebe grüße
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: 10.04.2020, 13:31     Titel:
  Antworten mit Zitat      
Hallo,

ja. Das ist bei Matrizen das Standardverhalten. Das sollte aber auch aus der Doku hervorgehen.

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