** This is part of the CTSim program
** Copyright (C) 1983-2000 Kevin Rosenberg
**
-** $Id: mathfuncs.cpp,v 1.3 2000/12/20 20:08:48 kevin Exp $
+** $Id: mathfuncs.cpp,v 1.4 2000/12/21 03:40:58 kevin Exp $
**
** This program is free software; you can redistribute it and/or modify
** it under the terms of the GNU General Public License (version 2) as
\r
\r
void \r
-vectorNumericStatistics (std::vector<double> vec, double& min, double& max, double& mean, double& mode, double& median, double& stddev)\r
+vectorNumericStatistics (std::vector<double> vec, const int nPoints, double& min, double& max, double& mean, double& mode, double& median, double& stddev)\r
{\r
- int n = vec.size();\r
- if (n <= 0)\r
+ if (nPoints <= 0)\r
return;\r
\r
mean = 0;\r
min = vec[0];\r
max = vec[0];\r
int i;\r
- for (i = 0; i < n; i++) {\r
+ for (i = 0; i < nPoints; i++) {\r
double v = vec[i];\r
if (v > max)\r
max = v;\r
min = v;\r
mean += v;\r
}\r
- mean /= n;\r
+ mean /= nPoints;\r
\r
static const int nbin = 1024;\r
int hist[ nbin ] = {0};\r
double spread = max - min;\r
mode = 0;\r
stddev = 0;\r
- for (i = 0; i < n; i++) {\r
+ for (i = 0; i < nPoints; i++) {\r
double v = vec[i];\r
int b = static_cast<int>((((v - min) / spread) * (nbin - 1)) + 0.5);\r
hist[b]++;\r
double diff = (v - mean);\r
stddev += diff * diff;\r
}\r
- stddev = sqrt (stddev / n);\r
+ stddev = sqrt (stddev / nPoints);\r
\r
int max_binindex = 0;\r
int max_bin = -1;\r
\r
std::sort(vec.begin(), vec.end());\r
\r
- if (n % 2) // Odd\r
- median = vec[((n - 1) / 2)];\r
+ if (nPoints % 2) // Odd\r
+ median = vec[((nPoints - 1) / 2)];\r
else // Even\r
- median = (vec[ (n / 2) - 1 ] + vec[ n / 2 ]) / 2;\r
+ median = (vec[ (nPoints / 2) - 1 ] + vec[ nPoints / 2 ]) / 2;\r
}\r