Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024 #pragma once
00025 #ifndef __D_MATH__
00026 #define __D_MATH__
00027
00028 #include <vector>
00029 #include <algorithm>
00030 #include <numeric>
00031 #include <cmath>
00032 #include <opencv/cv.h>
00033
00034 namespace DUtils {
00035
00036 class Math {
00037
00038 public:
00039
00040
00041
00042
00043 template <class T>
00044 static double Mean(const std::vector<T> &v)
00045 {
00046 if(v.empty())
00047 return 0;
00048 else{
00049 double sum = 0;
00050 typename std::vector<T>::const_iterator it;
00051 for(it = v.begin(); it != v.end(); it++){
00052 sum += *it;
00053 }
00054 return sum/double(v.size());
00055 }
00056 }
00057
00058
00059
00060
00061
00062 template <class T>
00063 static double Stdev(const std::vector<T> &v)
00064 {
00065 return Math::Stdev<T>(v, Math::Mean<T>(v));
00066 }
00067
00068 template <class T>
00069 static double Stdev(const std::vector<T> &v, double mean)
00070 {
00071 if(v.size() <= 1)
00072 return 0;
00073 else{
00074
00075 double sum = 0;
00076 typename std::vector<T>::const_iterator it;
00077 for(it = v.begin(); it != v.end(); it++){
00078 sum += pow(*it - mean, 2);
00079 }
00080 return sqrt(sum/double(v.size()-1));
00081 }
00082 }
00083
00084 };
00085
00086 }
00087
00088 #endif
00089