r310: plotfile updates
[ctsim.git] / libctsupport / mathfuncs.cpp
index c07445253d3355a5f92df91b67842f7b44d6d904..2eaa55153c6f73c6325dd66e4335dad3c0fcd912 100644 (file)
@@ -2,7 +2,7 @@
 **  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
@@ -84,17 +84,16 @@ normalizeAngle (double theta)
 \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
@@ -102,21 +101,21 @@ vectorNumericStatistics (std::vector<double> vec, double& min, double& max, doub
                        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
@@ -131,8 +130,8 @@ vectorNumericStatistics (std::vector<double> vec, double& min, double& max, doub
        \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