PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Mittelwerte von Feldern



oliver123
25.04.2011, 12:02
Hallo,
ich probiere nun schon eine Weile rum, doch ich komme einfach nicht weiter, deshalb wollte ich fragen, ob von euch jemand eine idee hat.
Ich möchte die mit LineData die ausgelesenen Werte in Felder schreiben, also z.B. k[0]=35, k[1]=37, k[2]=32, k[3]= 31 usw. und dann von k[0] und k[1] und k[2] und k[3] den Mittelwert bilden, jedoch sind es 30 Felder weshalb ich es nicht einfach ausschreiben kann. Den Mittelwert möchte ich dann wieder in eine Variable schreiben.
Vielen Dank für eure Hilfe!
Lg Oliver

BMS
25.04.2011, 12:12
Hallo,
versuche einmal so etwas: (ungetestet, lässt sich bestimmt noch optimieren...)


unsigned int durchschnitt=0;
unsigned int summe=0;
unsigned int anzahl=30;
for(unsigned char counter=0;counter<anzahl;counter++)
{
summe=summe+k[counter];
}
durchschnitt=summe/anzahl;
Grüße, Bernhard

oliver123
25.04.2011, 13:09
vielen Dank für deine Hilfe!
Habe es gerade nach dem Muster in meim Programm eingebaut und es funktioniert!
Aber eine Frage habe ich noch: Was bedeutet " unsigned char counter"?
Lg Oliver

TobiKa
25.04.2011, 13:44
Da wird eine Variable namens "counter" vom Typ "unsigned char" (vorzeichenlos, 1 Byte groß) definiert.

BMS
25.04.2011, 14:21
Genau so war es gemeint ;)
Und ich versuche immer, den kleinst möglichen Datentyp zu verwenden, und auch unsigned falls das sinnvoll ist. Auch mit Fließkommazahlen sollte man sparsam umgehen. Das spart Platz im RAM und ein 8-Bit-Controller kann es geringfügig schneller verarbeiten. Man könnte auch aus der Variable Summe und Durchschnitt eine einzige machen, würde noch etwas RAM sparen.

oliver123
26.04.2011, 08:57
das heißt also ich könnte alle variablen, die als zähler fungieren statt als unsigned int mit unsigned char definieren? hat dies einen großen geschwindigkeitsverlust zur folge, wenn man alle mit unsigned int definiert?

TobiKa
26.04.2011, 09:00
das heißt also ich könnte alle variablen, die als zähler fungieren statt als unsigned int mit unsigned char definieren?
Ja schon, musst aber sicher sein das der Wert nicht über 255 steigt.


hat dies einen großen geschwindigkeitsverlust zur folge, wenn man alle mit unsigned int definiert?
Ein Geschwindigkeitsverlust eher weniger, sollte für deine Zwecke auch absolut keine Rolle spielen.
Wenn du eine unsigned Variable deren Wert nie über 255 steigt als int definierst, ist das einfach nur Platzverschwendung.