- 3D-Druck Einstieg und Tipps         
Seite 3 von 4 ErsteErste 1234 LetzteLetzte
Ergebnis 21 bis 30 von 35

Thema: Messwert durch arithm. Mittel stabilisieren

  1. #21
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    23.12.2004
    Ort
    Ulm
    Alter
    37
    Beiträge
    136
    Anzeige

    LiFePo4 Akku selber bauen - Video
    Habe ich das mit der gleitenden Mittelung so richtig verstanden?

    Ich nehme 3000 als Startwert und mein aktueller Messwert ist 3100

    3000-(3000/1000)+(3100/1000)=3000,1

    Im nächsten Schritt mit aktuellem Messwert von z.B. 3200:
    3000,1-(3000,1/1000)+(3200/1000)=3000,3

    Aber 3000,3 ist ja nicht im entferntesten der Mittelwert von 3000 und 3200. Ich habe auch schon mittels Excel Tabelle einige Schritte durchgeführt, aber den gewünschten Effekt bringt das so nicht.

    Habe ich Manfs Erklärung falsch aufgefasst, oder das richtige Ergebnis und verstehe es nur nicht es zu deuten?

    Gruss

    Florian.

  2. #22
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    29.01.2004
    Beiträge
    2.441
    Habe ich Manfs Erklärung falsch aufgefasst, oder das richtige Ergebnis und verstehe es nur nicht es zu deuten?
    Die Division durch 1000 in Manfs Beispiel gilt nur, wenn man auch über 1000 Messwerte mittelt.
    Du rechest aber mit nur 2 Messwerten, bzw. mit 998 Messwerten die = 0 sind.

    Wenn du eine Mittelung über x Werte machst, musst du entweder in deinem Programm berücksichtigen, dass du Anfangs noch keine X-Messwerte hast und entsprechende nur durch die Anzahl der vorhandenen Messwerte teilen, oder dich einfach damit abfinden, dass das Programm nach dem Start erst mal eine ganze Zeit lang falsche Messwerte liefert.

    Ich habe mal ein bischen in Bascom mit der fliessenden Mittelung rumgespielt. Dan Code füge ich unten ein, wenn du Bascom hast, kannst du ihn dir anpassen und ihn im Simulator von Bascom laufen lassen.

    Der erste Teil des Programms geht von einer Mittelung über 50 Messwerte aus, die Messwerte sind immer genau 512, das Programm ignoriert aber so wie du, dass es am Anfang ja noch gar keine 50 Messwerte gibt.

    An der Ausgabe kannst du dann sehen, wie sich das Program langsam auf den korrekten Mittelwert "hinarbeitet". Ganz korrekt wird der Mittelwert gar nicht, dass liegt an der Fliesskommaarithmetik.


    Anschliessend kannst du dann selber neue Messwerte eingeben und sehen, wie wenig sich ein einzelner Messwert auf das fliessende Mittel auswirkt.



    Code:
    $sim
    $crystal = 16000000
    $regfile = "m16def.dat"
    $baud = 38400
    
    Dim Messwert As Integer : Messwert = 512
    Const Anzahl = 50                                           ' Anzahl Messwerte
    
    Dim Mittelwert As Single
    Dim Mittelwert_int As Integer
    Dim Temp As Single
    
    Dim Zaehler As Word : Zaehler = 0
    
    While Mittelwert < 511
       Incr Zaehler
       Temp = Mittelwert / Anzahl
       Mittelwert = Mittelwert - Temp
       Temp = Messwert / Anzahl
       Mittelwert = Mittelwert + Temp
       Print Zaehler ; ": " ; Mittelwert
    Wend
    
    'Print Zaehler ; ": " ; Mittelwert
    
    
    Do
       Input "Neuer Messwert: " , Messwert
    '   For Zaehler = 1 To Anzahl
          Temp = Mittelwert / Anzahl
          Mittelwert = Mittelwert - Temp
          Temp = Messwert / Anzahl
          Mittelwert = Mittelwert + Temp
          Mittelwert_int = Mittelwert
    '  Next Zaehler
       Print "Neuer Mittelwert: " ; Mittelwert_int
    
    Loop
    End

  3. #23
    Super-Moderator Lebende Robotik Legende Avatar von Manf
    Registriert seit
    30.01.2004
    Ort
    München
    Alter
    71
    Beiträge
    13.056
    Bei dem gleitenden Mittelwert über z.B. 1000 Werte stützt sich der vorhandene Mittelwert auf ein Gewicht von tausend Werten. Nun kommen zwei neue Werte und es wid abgestimmt wie groß der Mittelwert aktuell ist.
    Da wirken die beiden neuen Werte als kleine Störung.

    Wenn der Wert 3100 über 1000 Messungen anliegt dann beeinflußt er das Ergbnis erheblich und nach weiteren 2000 Messungen ist er praktisch übernommen. Die Anzahl 1000 ist etwas unpraktisch zum nachrechen, in EXCEL sollte es aber gehen.

  4. #24
    Erfahrener Benutzer Robotik Visionär
    Registriert seit
    26.11.2005
    Ort
    bei Uelzen (Niedersachsen)
    Beiträge
    7.942
    Das "gleitenden" Mittel ohne ein speichern der Werte, ist kein echtes gleitendes Mittel, sondern mehr ein digitale Version einen Tiefpasses 1. ter Ordnung. Die Zeitkonstante entspricht halt der Zahl durch die geteilt wird (mal Ziet zwischen den Punkten). Bei 1000 als Teiler muss man da schon etwa 5000 Werte abwarten bis man sich wirklich dem neuen Wert genähert hat. Bei einer Rate von rund 5000 Werten pro Sekunde ist das aber nicht so schlimm.

  5. #25
    Super-Moderator Lebende Robotik Legende Avatar von Manf
    Registriert seit
    30.01.2004
    Ort
    München
    Alter
    71
    Beiträge
    13.056
    Genau, es ist ein Tiefpass erster Ordnung, der durch diese Funktion realisiert wird.
    Die Filterfunktion dieses Tiefpasses ist eine Mittelung über die vorangegangenen Werte, die in ihrer Gewichtung exponentiell (über der Zeit) abklingen.
    Diese Mittelungsfunktion gleitet über die die eingehenden Werte und es ist schon etwas besonderes, dass diese Funktion ohne ein Speichern aller Einzelwerte bestimmt werden kann. Die abklingende Gewichtung wird in jedem Schritt durch die Bewertung des neuen Wertes gegenüber dem bisherigen gewichteten Mittelwert für alle zurückliegenden Werte bestimmt.

    Ich wollte das nur noch einmal deutlich machen. Man kann dann ja zur Filterfunktion und ihrer Implementierung stehen wie man will.
    Wenn der Tiefpass erster Ordung immer optimal wäre, dann gäbe es ja die ganzen anderen Filterfunktionen nicht.

  6. #26
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    23.12.2004
    Ort
    Ulm
    Alter
    37
    Beiträge
    136
    Danke für die ausführlichen Erläuterungen. In der Theorie habe ich die Sache mittlerweile verstanden. Die softwareseitige Umsetzung bzw Anpassung werde ich bestimmt mit Hilfe des Beispiels auf der 1. Seite schaffen.

    Gruss

    Florian.

  7. #27
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    29.01.2004
    Beiträge
    2.441
    Bei 1000 als Teiler muss man da schon etwa 5000 Werte abwarten bis man sich wirklich dem neuen Wert genähert hat. Bei einer Rate von rund 5000 Werten pro Sekunde ist das aber nicht so schlimm.
    Nö, aber bei einer Rate von ca. 1 Messwert pro Sekunde im Bascom Simulator wurde das doch schnell langweilig

  8. #28
    Erfahrener Benutzer Robotik Visionär
    Registriert seit
    26.11.2005
    Ort
    bei Uelzen (Niedersachsen)
    Beiträge
    7.942
    Im Simulator muß man dann halt von 1000 auf 10 ändern.

  9. #29
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    29.01.2004
    Beiträge
    2.441
    Im Simulator muß man dann halt von 1000 auf 10 ändern.
    Naja, auf die Idee bin ich auch gekommen, habe es allerdings auf 50 geändert um den Eindruck wie wenig einzelne Werte das Mittel beeinflussen etwas stärker zu halten.

    Gibt es einen speziellen Grund für die 10, weil der Simulator z.B. um Faktor 100 langsamer ist oder ist die 10 einfach nur ein Beispiel?

  10. #30
    Erfahrener Benutzer Robotik Visionär
    Registriert seit
    26.11.2005
    Ort
    bei Uelzen (Niedersachsen)
    Beiträge
    7.942
    Die 10 Waren einfach nur ein Beispiel, so das man die 5*10 Werte zum einschwingen noch sinnvoll abwarten kann.

Seite 3 von 4 ErsteErste 1234 LetzteLetzte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

Solar Speicher und Akkus Tests