Forum: Mikrocontroller und Digitale Elektronik Mittelwert


von Benedikt (Gast)


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 ?

von sammy (Gast)


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.

von Conlost (Gast)


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

von Olaf (Gast)


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

von sammy (Gast)


Lesenswert?

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

von Benedikt (Gast)


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.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.