Dependencies:   mbed

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers main.cpp Source File

main.cpp

00001 // mean and median averaging examples, sford
00002 
00003 #include "mbed.h"
00004 
00005 AnalogIn input(p20);
00006 
00007 int compare(const void *a, const void *b) {
00008     return (int)(*(float*)a - *(float*)b);
00009 }
00010 
00011 float median(float *samples, int n) {
00012     qsort(samples, n, sizeof(float), compare);
00013     if(n % 2) { // odd number of samples
00014         return samples[(n - 1)/2];
00015     } else {    // even number of samples
00016         return (samples[(n/2)-1] + samples[n/2]) / 2.0;
00017     }
00018 }
00019 
00020 float mean(float *samples, int n) {
00021     float sum = 0.0;
00022     for (int i=0; i<n; i++) {
00023         sum += samples[i];
00024     }
00025     return sum / (float)n;
00026 }
00027 
00028 int main() {
00029 
00030     float samples[9];
00031 
00032     // take some samples
00033     for(int i=0; i<9; i++) {
00034         samples[i] = input;
00035         wait(0.01);
00036     }
00037 
00038     // show the samples
00039     for(int i=0; i<9; i++) {
00040         printf("%f\n", samples[i]);
00041     }
00042     
00043     // show the averages
00044     printf("mean = %f\n", mean(samples, 9));
00045     printf("median = %f\n", median(samples, 9));
00046 }