source: tags/release-0.9/Utils/getStats.cc @ 813

Last change on this file since 813 was 3, checked in by Matthew Whiting, 18 years ago

This is the first full import of all working code to
the Duchamp repository.
Made three directories at top level:

branches/ tags/ trunk/

and trunk/ has the full set of code:
ATrous/ Cubes/ Detection/ InputComplete? InputExample? README Utils/ docs/ mainDuchamp.cc param.cc param.hh

File size: 1.5 KB
Line 
1#include <iostream>
2#include <math.h>
3#include <Utils/utils.hh>
4
5void findMedianStats(float *&array, int size, float &median, float &madfm)
6{
7  // NOTE: madfm = median absolute deviation from median
8  float *newarray = new float[size];
9
10  for(int i=0;i<size;i++) newarray[i] = array[i];
11  sort(newarray,0,size-1);
12  if((size%2)==0) median = 0.5*(newarray[size/2-1]+newarray[size/2]);
13  else median = newarray[size/2];
14
15  for(int i=0;i<size;i++) newarray[i] = fabs(array[i]-median);
16  sort(newarray,0,size-1);
17  if((size%2)==0) madfm = 0.5*(newarray[size/2-1]+newarray[size/2]);
18  else madfm = newarray[size/2];
19
20  delete [] newarray;
21}
22 
23void findMedianStats(float *&array, long size, float &median, float &madfm)
24{
25  // NOTE: madfm = median absolute deviation from median
26  float *newarray = new float[size];
27
28  for(int i=0;i<size;i++) newarray[i] = array[i];
29  sort(newarray,0,size-1);
30  if((size%2)==0) median = 0.5*(newarray[size/2-1]+newarray[size/2]);
31  else median = newarray[size/2];
32
33  for(int i=0;i<size;i++) newarray[i] = fabs(array[i]-median);
34  sort(newarray,0,size-1);
35  if((size%2)==0) madfm = 0.5*(newarray[size/2-1]+newarray[size/2]);
36  else madfm = newarray[size/2];
37
38  delete [] newarray;
39}
40 
41
42void findNormalStats(float *&array, int size, float &mean, float &sig)
43{
44  mean = array[0];
45  for(int i=1;i<size;i++){
46    mean += array[i];
47  }
48  mean /= float(size);
49
50  sig = (array[0]-mean) * (array[0]-mean);
51  for(int i=1;i<size;i++) sig += (array[i]-mean)*(array[i]-mean);
52  sig = sqrt(sig/float(size-1));
53
54}
55
Note: See TracBrowser for help on using the repository browser.