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 ?
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.
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
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.