Dependencies:   mbed

Revision:
0:1237894bf4b5
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp	Tue Nov 03 05:46:18 2009 +0000
@@ -0,0 +1,46 @@
+// mean and median averaging examples, sford
+
+#include "mbed.h"
+
+AnalogIn input(p20);
+
+int compare(const void *a, const void *b) {
+    return (int)(*(float*)a - *(float*)b);
+}
+
+float median(float *samples, int n) {
+    qsort(samples, n, sizeof(float), compare);
+    if(n % 2) { // odd number of samples
+        return samples[(n - 1)/2];
+    } else {    // even number of samples
+        return (samples[(n/2)-1] + samples[n/2]) / 2.0;
+    }
+}
+
+float mean(float *samples, int n) {
+    float sum = 0.0;
+    for (int i=0; i<n; i++) {
+        sum += samples[i];
+    }
+    return sum / (float)n;
+}
+
+int main() {
+
+    float samples[9];
+
+    // take some samples
+    for(int i=0; i<9; i++) {
+        samples[i] = input;
+        wait(0.01);
+    }
+
+    // show the samples
+    for(int i=0; i<9; i++) {
+        printf("%f\n", samples[i]);
+    }
+    
+    // show the averages
+    printf("mean = %f\n", mean(samples, 9));
+    printf("median = %f\n", median(samples, 9));
+}