#ifndef MATHUTIL_H #define MATHUTIL_H #include #include #include namespace Helper { static double minvec(const QVector &vec) { double val = std::numeric_limits::min(); for (int i = 0; i < vec.count(); ++i) { if (i == 0) { val = vec.at(i); } else if (val > vec.at(i)) { val = vec.at(i); } } return val; } static double maxvec(const QVector &vec) { double val = std::numeric_limits::max(); for (int i = 0; i < vec.count(); ++i) { if (i == 0) { val = vec.at(i); } else if (val < vec.at(i)) { val = vec.at(i); } } return val; } /// 均值 static double mean(const QVector &vec) { if (vec.count() == 0) { return 0; } double sum = 0; for (auto v : vec) { sum += v; } return sum / vec.count(); } /// 标准差 static double standardDeviation(const QVector &vec) { if (vec.count() == 0) { return 0; } double meanVal = mean(vec); double sum = 0; for (auto v : vec) { sum += qPow(v - meanVal, 2.0); } return sum / vec.count(); } static std::pair meanAndStandardDeviation(const QVector &vec) { if (vec.count() == 0) { return std::make_pair(0, 0); } double meanVal = mean(vec); double sum = 0; for (auto v : vec) { sum += qPow(v - meanVal, 2.0); } return std::make_pair(meanVal, sum / vec.count()); } /// 方差 static double variance(const QVector &vec) { return qSqrt(standardDeviation(vec)); } } // namespace Helper #endif // MATHUTIL_H