+bool\r
+PlotFile::getMinMax (int iStartingCol, double& dMin, double& dMax) const\r
+{\r
+ if (iStartingCol >= m_iNumColumns) {\r
+ sys_error (ERR_WARNING, "iStartingCol >= iNumColumns");\r
+ return false;\r
+ }\r
+\r
+ int iOffset = iStartingCol * m_iNumRecords;\r
+ dMin = m_vecCurves[ 0 + iOffset ];\r
+ dMax = dMin;\r
+\r
+ for (int iCol = iStartingCol; iCol < m_iNumColumns; iCol++) {\r
+ int iOffset = iCol * m_iNumRecords;\r
+ for (int iRec = 0; iRec < m_iNumRecords; iRec++) {\r
+ double dVal = m_vecCurves[ iRec + iOffset ];\r
+ if (dVal < dMin)\r
+ dMin = dVal;\r
+ else if (dVal > dMax)\r
+ dMax = dVal;\r
+ }\r
+ }\r
+\r
+ return true;\r
+}\r
+\r
+bool \r
+PlotFile::statistics (int iStartingCol, double& min, double& max, double& mean, double& mode, double& median, double &stddev) const\r
+{\r
+ if (iStartingCol >= m_iNumColumns) {\r
+ sys_error (ERR_WARNING, "iStartingCol >= iNumColumns");\r
+ return false;\r
+ }\r
+\r
+ int iOffset = iStartingCol * m_iNumRecords;\r
+ int iNPoints = (m_iNumColumns - iStartingCol) * m_iNumRecords;\r
+ std::vector<double> vec;\r
+ vec.resize (iNPoints);\r
+\r
+ int iVec = 0;\r
+ for (int iCol = iStartingCol; iCol < m_iNumColumns; iCol++) {\r
+ int iOffset = iCol * m_iNumRecords;\r
+ for (int iRec = 0; iRec < m_iNumRecords; iRec++)\r
+ vec[iVec++] = m_vecCurves[ iRec + iOffset ];\r
+ }\r
+\r
+ vectorNumericStatistics (vec, iNPoints, min, max, mean, mode, median, stddev);\r
+\r
+ return true;\r
+}\r
+\r