INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.

Antwort schreiben 
 
Themabewertung:
  • 0 Bewertungen - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Gewichteten Durchschnitt berechnen, 20 Werte in fortlaufender Variable speichern
26.06.2016, 18:04 (Dieser Beitrag wurde zuletzt bearbeitet: 26.06.2016 18:23 von TimeMen.)
Beitrag #1
Gewichteten Durchschnitt berechnen, 20 Werte in fortlaufender Variable speichern
Hallo Community,

Messe mit einem IR-Sensor 20x die Entfernung.
Leider schwanken die Werte teilweise um einen halben Zentimeter.
Wie kann ich es realisieren den gewichteten Mittelwert aller gemessenen Werte zu erhalten?
Müsste ich da nicht jeden der zwanzig Werte in eine Variable schreiben und mit denen rechnen?
Aber wie bekomme ich es hin dass die Variable wächst?
Also praktisch die Erste Messung in "wert1" gespeichert wird, und demnach die letzte dann in "wert20"?
Und dann eben die Frage wie ich aus diesen 20 Werten den gewichteten Durchschnitt bekomme.

Liebe Grüße und schönen Abend
TimeMen

Oder wäre es einfacher die Messwerte in einem Array zu speichern?
Doch wie kann ich die Werte nacheinander in das Array schreiben ohne etwas zu überschreiben?
Die Werte messe ich innerhalb einer For-Schleife die eben bis 20 zählt,
Bleibt dann immernoch die Frage wie ich den gewichteten Durchschnitt berechne.
Mit Array oder Variable
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
26.06.2016, 19:15
Beitrag #2
RE: Gewichteten Durchschnitt berechnen, 20 Werte in fortlaufender Variable speichern
Du kannst alle Messungen in eine Variable aufzählen und dann durch die Anzahl teilen.
Beispiel:
"Value1=Value1 + Messwert"
Nachdem alle 20 Werte gespeichert wurden durch 20 teilen.
Dies ist eine einfache Lösung, du musst dabei nur darau achten, wenn 20 Werte aufgelaufen sind.

I2C = weniger ist mehr: weniger Kabel, mehr Probleme. Cool
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
26.06.2016, 19:16 (Dieser Beitrag wurde zuletzt bearbeitet: 26.06.2016 19:17 von rkuehle.)
Beitrag #3
RE: Gewichteten Durchschnitt berechnen, 20 Werte in fortlaufender Variable speichern
Hallo TimeMen,

du kannst ein float array anlegen und die Werte der Messung in einer for - Schleife in die Elemente des Arrays schreiben.
Beispiel:
Code:
const int messungen = 20; // Anzahl messungen
float myArray[messungen]; // Array für Messwerte
float durchschnitt = 0.0; // Durchschnittswert
void setup()
{
  Serial.begin(9600);
// Werte einlesen
  for (int i = 0; i < messungen; i++)
  {
    myArray[i] = i; // anstatt i dann den Sensorwert rein
  }
// Werte aufaddieren
  for (int i = 0; i < messungen; i++)
  {
    durchschnitt = durchschnitt + myArray[i];
  }
// Summe durch Anzahl
  durchschnitt = durchschnitt / messungen;
  Serial.println(durchschnitt);
}
void loop() {}
Die Frage gewichteter Druchschnitt ergibt sich ja nur wenn sich die Bedingungen zur Ermittlung des Sensorwertes ändern. Von daher die Frage: wieso gewichteter Durchschnitt?
Grüße Ricardo

Edit: Upps, gleicher Gedanke

Nüchtern betrachtet...ist besoffen besser Big Grin
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
26.06.2016, 20:00 (Dieser Beitrag wurde zuletzt bearbeitet: 26.06.2016 20:01 von TimeMen.)
Beitrag #4
RE: Gewichteten Durchschnitt berechnen, 20 Werte in fortlaufender Variable speichern
Erstmal danke für die fixen antworten, muss mal sehen wie ich das geschickt einbaue Smile

Gerichtet deswegen, weil ich wie beschrieben Schwankungen in der Messung trotz unverändertem Abstand habe (Keine Ahnung warum...).
Eine Messreihe schaut so aus:

Code:
11.15
11.15
11.02
11.02
11.02
11.15
11.15
11.12
11.12
11.08
11.05
10.95
10.82
10.60
11.12
11.12
11.12
11.12
10.98
11.15

Nun wäre es aber für die Verarbeitung gut, wenn ich aus diesen 20 Zahlen einen Durchschnittswert errechnen könnte. Aufgrund der Genauigkeit wäre es aber geschickter daraus einen gewichteten Durchschnitt zu errechnen.
Sodass am Ende nur ein durchschnittlicher Wert an den Computer übertragen wird (Fürs erste) und nicht alle 20 Werte.
Sollte das mit dem Arduino schwer zu realisieren sein, könnte ich versuchen die Daten mit Bash zu einem gewichteten Durchschnitt zu verarbeiten.
Später möchte ich die Messwerte (Aufgrund des Projektes) mit einem Banana Pi verarbeiten (Ab da arbeite ich mit einem Freund zusammen an unserer Idee).
Aber vorerst wäre es gut, wenn ich die Werte auf dem Arduino verarbeiten könnte.

LG
TimeMen

Müssen nicht 20 Werte sein, aber ich möchte auf Nummer sicher gehen, dass der Wert so genau wie möglich ist
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
26.06.2016, 20:25
Beitrag #5
RE: Gewichteten Durchschnitt berechnen, 20 Werte in fortlaufender Variable speichern
(26.06.2016 20:00)TimeMen schrieb:  Erstmal danke für die fixen antworten, muss mal sehen wie ich das geschickt einbaue Smile

Gerichtet deswegen, weil ich wie beschrieben Schwankungen in der Messung trotz unverändertem Abstand habe (Keine Ahnung warum...).
Eine Messreihe schaut so aus:

Code:
11.15
11.15
11.02
11.02
11.02
11.15
11.15
11.12
11.12
11.08
11.05
10.95
10.82
10.60
11.12
11.12
11.12
11.12
10.98
11.15

Nun wäre es aber für die Verarbeitung gut, wenn ich aus diesen 20 Zahlen einen Durchschnittswert errechnen könnte. Aufgrund der Genauigkeit wäre es aber geschickter daraus einen gewichteten Durchschnitt zu errechnen.
Sodass am Ende nur ein durchschnittlicher Wert an den Computer übertragen wird (Fürs erste) und nicht alle 20 Werte.
Sollte das mit dem Arduino schwer zu realisieren sein, könnte ich versuchen die Daten mit Bash zu einem gewichteten Durchschnitt zu verarbeiten.
Später möchte ich die Messwerte (Aufgrund des Projektes) mit einem Banana Pi verarbeiten (Ab da arbeite ich mit einem Freund zusammen an unserer Idee).
Aber vorerst wäre es gut, wenn ich die Werte auf dem Arduino verarbeiten könnte.

LG
TimeMen

Müssen nicht 20 Werte sein, aber ich möchte auf Nummer sicher gehen, dass der Wert so genau wie möglich ist

unter einem gewichteten mittel versteht man meiner ansicht nach etwas anderes, nämlich, dass einige zahlen aus der reihe einen höheren stellenwert haben als andere.
klassisches beispiel wäre z.b. ein notendurchschnitt wenn man z.b. definiert, dass die note in physik oder mathe einen höheren stellenwert haben soll als in religion.

deine messwerte sind aber erstmal statistisch gleich viel wert weil sie zufallsergebnisse sind.
für gleichwertige werte hat doch da der onkel gauss gezeigt, dass der reale wert r dann am besten angenähert wird wenn die summe der quadratischen abstande aller werte (r-rx)**2 minimal wird. durch den quadratischen abstand werden stärkere ausreisser schwächer bewertet.
bei einer eindimensionalen zahlenreihe ist das genau das arithmetische mittel wie von @rkuehle oben beschrieben.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
26.06.2016, 21:02 (Dieser Beitrag wurde zuletzt bearbeitet: 26.06.2016 21:19 von TimeMen.)
Beitrag #6
RE: Gewichteten Durchschnitt berechnen, 20 Werte in fortlaufender Variable speichern
Zitat:für gleichwertige werte hat doch da der onkel gauss gezeigt, dass der reale wert r dann am besten angenähert wird wenn die summe der quadratischen abstande aller werte (r-rx)**2 minimal wird. durch den quadratischen abstand werden stärkere ausreisser schwächer bewertet.
bei einer eindimensionalen zahlenreihe ist das genau das arithmetische mittel wie von @rkuehle oben beschrieben.

Also wäre r dann mein Messwert (entfernung) und x wäre was?
und was meinst du mit **2 ?

Um wirklich den gewichteten Durchschnitt zu berechnen müsste ich wenn ich es richtig verstanden habe (Wikipedia und massmatics):

Die verschiedenen Häufigkeiten der Werte mit den Werten multiplizieren und mit den anderen addieren, und dann durch die Summe der Häufigkeiten (In meinem Fall, 20) teilen.
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
26.06.2016, 21:25 (Dieser Beitrag wurde zuletzt bearbeitet: 26.06.2016 21:34 von Pit.)
Beitrag #7
RE: Gewichteten Durchschnitt berechnen, 20 Werte in fortlaufender Variable speichern
(26.06.2016 21:02)TimeMen schrieb:  
Zitat:für gleichwertige werte hat doch da der onkel gauss gezeigt, dass der reale wert r dann am besten angenähert wird wenn die summe der quadratischen abstande aller werte (r-rx)**2 minimal wird. durch den quadratischen abstand werden stärkere ausreisser schwächer bewertet.
bei einer eindimensionalen zahlenreihe ist das genau das arithmetische mittel wie von @rkuehle oben beschrieben.

Also wäre r dann mein Messwert (entfernung) und x wäre was?
und was meinst du mit **2 ?

r wäre das ergebnis also der mittelwert, rx (r1, r2, ...... r20.....) die einzelwerte
**2 alte fortran schreibweise für quadrat :-)
schau mal in deiner formelsammlung nach,
es gibt auch sowas wie die standardabweichung, also der mittlere quadratische fehler des ermittelten messwertes.
je stärker die werte streuen, desto grösser wird die standardabweichung also der theoretische messfehler.
sind die gemessenen werte sehr eng beieinander ist der theoretische fehler klein.
wenn man die standardabweichung kennt kann man etwas über die qualität der messung aussagen oder z.b. über die qualität einer wahlprognose :-)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
26.06.2016, 21:30
Beitrag #8
RE: Gewichteten Durchschnitt berechnen, 20 Werte in fortlaufender Variable speichern
Zitat:nämlich, dass einige zahlen aus der reihe einen höheren stellenwert haben als andere.
Ja genau, das meinte ich mit
Zitat:wenn sich die Bedingungen zur Ermittlung des Sensorwertes ändern
Da das hier nicht auftritt sollte man die normale Formel zur Durchschnittsberechnung anwenden können.
Möchtest du es (aus welchem Grund auch immer) trotzdem wichten
(wie eigentlich? - geht ja nicht, da nur eine Wertereihe), sieht es aus wie hier am Excelbeispiel gezeigt: https://support.microsoft.com/de-de/kb/109211
Die Wichtung würde nur Sinn machen / umsetzbar, wenn du bei einer bestimmten Größe der Abweichung die Werte in eine zweite Zahlenreihe (Array) schiebst und entsprechend verarbeitest.
Grüße Ricardo

Nüchtern betrachtet...ist besoffen besser Big Grin
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  Fehler beim Speichern von Projekten Manni66 16 683 23.08.2016 10:05
Letzter Beitrag: hotsystems
  Ausgabe druckt immer 2 Werte anstatt nur einen. Finde den Fehler nicht TimeMen 24 734 02.07.2016 14:18
Letzter Beitrag: hotsystems
  String in EEPROM Speichern BennIY 2 406 27.06.2016 10:23
Letzter Beitrag: BennIY
  Messwerte in Array speichern ArduinoMega2560 2 414 07.06.2016 16:30
Letzter Beitrag: SkobyMobil
  Inhalt einer Variable mit per Virtual Wire versenden toto1975 17 1.761 26.03.2016 18:57
Letzter Beitrag: hotsystems
  Werte an anderes Programm weiterleiten Typ 2 433 12.03.2016 23:28
Letzter Beitrag: Typ
  Sensordaten in MYSQL speichern rieders 3 690 02.03.2016 19:58
Letzter Beitrag: rieders
  Pin anhand Variable schalten ! b3ta 13 824 12.01.2016 08:30
Letzter Beitrag: b3ta
  Library - Variable in Memberfunktion Scheams 1 405 10.01.2016 22:40
Letzter Beitrag: Rene
  digitale Werte trotz Stromunterbrechung nicht verlieren goldfisch 63 4.219 06.01.2016 13:17
Letzter Beitrag: Bitklopfer

Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste