Zuviel Werbung? - > Hier kostenlos beim SPS-Forum registrieren

Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 17

Thema: Mittelwertberechnung

  1. #1
    Registriert seit
    20.10.2004
    Beiträge
    650
    Danke
    5
    Erhielt 26 Danke für 26 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallöchen allerseits

    Ich bin mal neugierig was ihr über dieses Thema sagt

    Ihr sollt einen Mittelwert von 20 sekunden bilden wie würdet ihr das anstellen

    1) z.B. Messwert einlesen , alten wert aus db löschen ,neuen reinschreiben ,dividieren durch die anzahl und mittelwert ist fertig

    2) oder ((1*Messwert)+(19*aktueller Mittelwert))/20 = aktueller Mittelwert

    natürlich nur wenn man davon ausgeht das man dies nur jede sekunden aufruft

    so nun meine frage was ist an der zweiten fariante falsch
    oder was würde mir einen fehler einbringen

    mfg
    Zitieren Zitieren Mittelwertberechnung  

  2. #2
    Registriert seit
    30.01.2004
    Ort
    Erfurt
    Beiträge
    961
    Danke
    42
    Erhielt 109 Danke für 87 Beiträge

    Standard

    Hallo,

    1) z.B. Messwert einlesen , alten wert aus db löschen ,neuen reinschreiben ,dividieren durch die anzahl und mittelwert ist fertig
    Bei der Variante fehlt vor dem Dividieren die Summenbildung

    2) oder ((1*Messwert)+(19*aktueller Mittelwert))/20 = aktueller Mittelwert
    Diese Variante hat den Nachteil, das der aktuelle Mittelwert ja bereits aus 20 alten Werten gebildet worden ist. Im aktuellen Tastschritt erhältst Du nun einen Mittelwert aus 21 Werten, ein zumeist wahrscheinlich nicht auffallender aber gelegentlich vielleicht doch übler Fehler, vor allem bei kleineren n (n: Anzahl der Werte).

    Warum nicht so:
    Code:
    neue_Summe = alte_Summe - ältester_Wert + neuester_Wert
    neuer_Mittelwert = neue_Summe / n
    Tschüsss Peter

  3. #3
    Registriert seit
    20.10.2004
    Beiträge
    650
    Danke
    5
    Erhielt 26 Danke für 26 Beiträge

    Standard

    hallöchen

    zu 1 oki danke die summe ist schon klar macht auch normalerweise ein fb :P

    ok zum 2

    das problem beim 2 ist wenn die werte stark schwanken stimmt der mittelwert nicht mehr
    das mit deinen 21 Werten stimmt nicht ganz du bewertest denn altenMesswert ja nur mit 95% damit fällt dir ja ein Messwert raus
    und denn neuen nimmst du zu 5 % in deine Rechnung mit auf somit wieder 100 % und 20 Werte

    das ganze ist zwar nur eine annäherung aber ....

    sollte stimmen

    mfg

  4. #4
    Registriert seit
    30.01.2004
    Ort
    Erfurt
    Beiträge
    961
    Danke
    42
    Erhielt 109 Danke für 87 Beiträge

    Standard

    Hallo,

    das mit deinen 21 Werten stimmt nicht ganz du bewertest denn altenMesswert ja nur mit 95% damit fällt dir ja ein Messwert raus
    und denn neuen nimmst du zu 5 % in deine Rechnung mit auf somit wieder 100 % und 20 Werte
    Doch Bei Variante zwei besteht der alte Mittelwert aus 1/20 der Summe von 20 alten Werten, davon gehen 95% in die Ermittlung des neuen MW ein, also 19/20 von jedem der 20 Werte.
    Dazu kommt dann 1/20 des neuesten Meßwertes.
    Fällt der älteste Wert (der eigentlich nich mehr da sein sollte) stark aus der Reihe, stimmt das Ergebnis der Variante zwei dann eben nicht mehr mit dem Resultat von Variante 1 überein, da dieser das Ergebnis verfälscht!

    Peter

  5. #5
    Registriert seit
    19.06.2003
    Beiträge
    2.200
    Danke
    85
    Erhielt 259 Danke für 175 Beiträge

    Standard

    Zu Variante 2:
    Es gehen nicht 21 Werte ein und nicht zu gleichen Teilen, sondern im Prinzip ist die GANZE Vorgeschichte darin enthalten:

    S(n)=0.05*Xn+0.95*S(n-1)
    S(n-1)=0.05*X(n-1)+0.95*S(n-2)
    S(n-2)=0.05*X(n-2)+0.95*S(n-3)
    u.s.w.
    Wem's Spaß macht, kann nun in die 2. Zeile in die 1. für S(n-1) einsetzen un immer so weiter und eine geschlossenen Formel suchen...

    Man bezeichnet das auch als "exponetiell gewichteten gleitenden Mittelwert". Es ist, bis auf daß es sich um zu bestimmten (diskreten) ZeitPUNKTEN erfaßte ("abgetastete") Werte handelt, die genaue Entsprechung zu einem R-C-Tiefpaß oder einem PT1-Glied aus der Regelungstechnik.

  6. #6
    Registriert seit
    13.03.2004
    Beiträge
    135
    Danke
    10
    Erhielt 6 Danke für 6 Beiträge

    Standard

    Hallo,

    um die Diskussion in eine andere Richtung zu lenken, möchte ich beschreiben, wie ich diese Aufgabenstellung gelöst habe.
    1. Aktuellen Messwert lesen
    2. Messwert in einen Ringpuffer schreiben. Z.B. ein Array mit x Werten.
    Dabei wird nach Programmstart zunächst in den ersten Speicherplatz geschrieben und anschließend bei jedem Schreibvorgang der Index erhöht, bis der letzte Platz beschrieben wurde. Anschließend beginnt die Schleife wieder beim ersten Speicherplatz und der erste bzw. älteste Messwert wird automatisch überschrieben.
    3. Die Werte werden aufaddiert und durch die Anzahl geteilt

    Vorteil dieses Algorythmus ist, das keine aufwendigen Umkopierorgien stattfinden. Der Nachteil ist, das sich der aktuelle messwert nicht an einem festen Speicherplatz befindet.

    Gruß Hagen

  7. #7
    Registriert seit
    20.10.2004
    Beiträge
    650
    Danke
    5
    Erhielt 26 Danke für 26 Beiträge

    Standard

    guten Morgen allerseits

    danke hagen

    genau so habs ich auch programmiert nur brauchst du für das ganze eine ganze menge speicher

    kleines Rechenbeispiel

    du sollst 20 sek mittelwerte Rechnen bekommst alle 100 ms 1 messwert
    das wären 200 Werte ( lassen wir mal denn speicher für die summe und denn aktuellen mittelwert raus ) hast du 800 Byte
    das ganze für 300 Messwerte und du hast einen speicherplatz bedarf von 240 Kb

    wenn man das ganze auf 5 sek macht sind noch immer 60 kb

    bei der anderen lösung verbrauchst du kein einziges bit

    Morgen zottel

    wobei die vorgeschichte immer mehr verblasst


    hier mal eine Graphik

    rot ist der richtige mittelwert
    gelb ist die berechnung

    mal anders gefragt was ist ein mittelwert das ergebnis von x werten durch die anzahl
    oder ein geglätter wert der die messwerte wiederspiegelt


    mfg

  8. #8
    Registriert seit
    27.05.2004
    Ort
    Thüringen/Berlin
    Beiträge
    12.222
    Danke
    533
    Erhielt 2.697 Danke für 1.949 Beiträge

    Standard

    Wenn du Speicherplatz sparen willst und trotzdem eher in Richtung "mathematischen" Mittelwert gehen willst, kannst du ja je Sekunde einen Mittelwert bilden und aus diesen wiederum einen Gesamt-Mittelwert. Das nächste Problem ist auch die Rechenungenauigkeit, wenn du sehr viele Werte aufaddierst und dann dividierst.
    Gruß
    Ralle

    ... there\'re 10 kinds of people ... those who understand binaries and those who don\'t …
    and the third kinds of people … those who love TIA-Portal

  9. #9
    Registriert seit
    19.06.2003
    Beiträge
    2.200
    Danke
    85
    Erhielt 259 Danke für 175 Beiträge

    Standard

    Zitat Zitat von kpeter

    Morgen zottel

    wobei die vorgeschichte immer mehr verblasst
    Wollte ich mit "und nicht tu gleichen Teilen" gesagt haben. Zeigen die Formeln auch und das Wort "exponetiell". Zur Rauschunterdrückung oder Glättung ist gegen die 2. Methode absolut nichts einzuwenden. Sie ist überall da angebracht, wo du in der Analogtechnik einen RC-Tiefpass nehmen würdest.
    Übrigens: So, wie du 2 RC-Glieder, durch OP-Amp gepuffert, damit der Strom in das 2. nicht den Ladestrom des 1. belastet, in Reihe schalten kannst, um ein Filter höherer Ordnung zu erhalten, kannst du es auch mit dieser "Mittelwertformel" machen.
    In der digitalen Signalverarbeitung heißt so etwas ein IIR-(infinite impulse response) Filter.

    Die 1. Variante der Mittelwertbildung ist hingegen ein spezielles FIR-(finite impulse response) Filter. Ein allgemeines FIR-Filter hat eine Reihe von Koeffizienten, so daß der Wert in der ersten Speicherstelle mit dem ersten Koeffizienten multipliziert wird u.s.w. In der 1. Variante sind einfach alle Koeffizienten gleich.

  10. #10
    Registriert seit
    20.10.2004
    Beiträge
    650
    Danke
    5
    Erhielt 26 Danke für 26 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallöchen

    Zitat Zitat von Ralle
    kannst du ja je Sekunde einen Mittelwert bilden und aus diesen wiederum einen Gesamt-Mittelwert.
    Wenn ich das machen würde dann brauch ich gar keinen mittelwert denn der würde mir die ganze sache noch mehr verfälschen

    Zitat Zitat von Ralle
    Das nächste Problem ist auch die Rechenungenauigkeit, wenn du sehr viele Werte aufaddierst und dann dividierst.
    Was meinst du mit Rechenungenauigkeit ???

    mfg

Lesezeichen

Berechtigungen

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