Simon Ford
/
average
Embed:
(wiki syntax)
Show/hide line numbers
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 }
Generated on Tue Jul 12 2022 21:29:24 by 1.7.2