Changeset 2568
- Timestamp:
- Sep 26, 2011, 3:38:30 AM (11 years ago)
- Location:
- trunk/yat/statistics
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/yat/statistics/AveragerPairWeighted.cc
r2567 r2568 35 35 36 36 AveragerPairWeighted::AveragerPairWeighted(void) 37 : wxy_ (0)37 : wxy_centered_(0) 38 38 { 39 39 } … … 51 51 assert(!std::isnan(wy) && "wy is nan"); 52 52 double w=wx*wy; 53 xy_add(x, y, 0, w); 53 54 x_.add(x,w); 54 55 y_.add(y,w); 55 wxy_ += w*x*y;56 56 } 57 57 … … 71 71 double AveragerPairWeighted::msd(void) const 72 72 { 73 return (x_.sum_wxx()+y_.sum_wxx()-2* wxy_)/sum_w();73 return (x_.sum_wxx()+y_.sum_wxx()-2*sum_xy())/sum_w(); 74 74 } 75 75 … … 83 83 void AveragerPairWeighted::reset(void) 84 84 { 85 x_.reset(); y_.reset(); wxy_ =0;85 x_.reset(); y_.reset(); wxy_centered_=0; 86 86 } 87 87 … … 95 95 double AveragerPairWeighted::sum_xy(void) const 96 96 { 97 return wxy_;97 return sum_xy_centered() + x_.sum_wx()*y_.mean(); 98 98 } 99 99 … … 101 101 double AveragerPairWeighted::sum_xy_centered(void) const 102 102 { 103 return sum_xy() - x_.sum_wx()*y_.mean(); 103 return wxy_centered_; 104 } 105 106 107 void AveragerPairWeighted::xy_add(double mx, double my, double wxy_centered, 108 double w) 109 { 110 if (!w) 111 return; 112 /* 113 For derivation of update formula refer to 114 http://www.janinebennett.org/index_files/ParallelStatisticsAlgorithms.pdf 115 */ 116 wxy_centered_ += wxy_centered; 117 if (sum_w()) 118 wxy_centered_ += 119 w*sum_w() / (w+sum_w()) * (mx-x_.mean()) * (my-y_.mean()); 104 120 } 105 121 -
trunk/yat/statistics/AveragerPairWeighted.h
r2567 r2568 134 134 AveragerWeighted x_; // weighted averager with w = w_x*w_y 135 135 AveragerWeighted y_; // weighted averager with w = w_x*w_y 136 double wxy_; 136 double wxy_centered_; 137 138 void xy_add(double mx, double my, double xy_centered, double w); 137 139 }; 138 140
Note: See TracChangeset
for help on using the changeset viewer.