www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Mittelwert


Autor: Benedikt (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich möchte über etwa 256 Werte hinweg den Mittelwert bilden, aber nicht
nach dem Prinzip: 256 Werte Addieren, durch 256 teilen, fertig!
Die Werte sollen fortlaufend geglättet werden, normalerweise mache ich
das so:
Mittelwert=Mittelwert*0.99+0.01*Messwert (geht aber nicht ohne
Kommazahlen...)

Im Moment versuche ich gerade die Werte zu addieren, und pro addiertem
Wert ziehe ich wieder Mittelwert/256 ab, so dass ich als Ergebnis
eigentlich 256*Mittelwert erhalten sollte, aber die Werte steigen immer
weiter an.

Gibt es eine einfachere Möglichkeit in Assembler ?

Autor: sammy (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
du addierst die ersten beiden werte durch 2, dann beim naechsten wert
addierst du ihn zu dem vorher errechneten mittelwert und teilst ihn
durch 2 usw.

Autor: Conlost (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

hat es einen bestimmten Grund mit den 256 Werten?
Ich würde es so machen:
1. Wert + 2. Wert / 2 = Mittelwert
Mittelwert + 3. Wert / 2 = Mittelwert
Mittelwert + 4. Wert / 2 = Mittelwert
usw.
Geht das nicht?

Gruß,
Arno

Autor: Olaf (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hey Benedikt,

guck mal hier:
http://www.mikrocontroller.net/forum/read-1-30090.html#30117

Ich hatte da mal einen C-Code angegeben, den du sicher einfach in
Assembler umsetzen kannst.

Gruß,
Olaf

Autor: sammy (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ja, genau das meinte ich, habe ein "und teilst die" vergessen. ;-)

Autor: Benedikt (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke für die Lösungen.
Das hilft schon etwas weiter.
Allerdings ist das nicht ganz so einfach wie ich soeben gemerkt habe:
Die Werte liegen nämlich zwischen -16384 und 16384 (bzw. bei mir
zwischen 0 und 16384 mit einem extra Bit, das das Vorzeichen angibt,
aber das kann man leicht umrechnen)
Der Mittelwert liegt zwischen 0 und 8192, denn das ganze ist eine
Leistungsmessung über einen AD Wandler, der 5000 mal pro Sekunde die
Spannung und den Strom misst. Diese Werte werden multipliziert um die
Wirkleistung zu erhalten. Daraus muss ich nun den Mittelwert berechnen.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.