1. //this is actually autocovariance
  2. float autocovariance(vector <vector<float> > &G, int h, float avg) {
  3. float ss = 0;
  4. //loop through the paths
  5.  
  6. for(int i=0; i< G.size()-h; i++) {
  7. for(int j=0; j<G[i].size(); j++) {
  8. //ss = ss + (G[i][h+t] - avg) * (G[i][h] - avg);
  9. //cout << j << endl;
  10. //cout << (G[i+h][j] - avg) << endl;
  11. ss = ss + (G[i+h][j] - avg) * (G[i][j] - avg);
  12. }
  13. }
  14.  
  15. ss = ss/(float)( (G.size()-h) * G[0].size() );
  16. return ss;
  17. }
  18.  
  19.  
  20. float error(vector< vector<float> > &G, float avg) {
  21. float ss=0;
  22. /*
  23.   for(int h=1; h<G.size(); h++) {
  24.   ss = ss + autocorrelation(G, h, avg);
  25.   }
  26.   ss = 2*ss + autocorrelation(G, 0, avg);
  27.   */
  28. ss = autocovariance(G, 0, avg);
  29.  
  30. //sqrt( abs(ss)/(float)(G.size() * G[0].size()) );
  31. ss = sqrt(autocovariance(G, 0, avg));
  32. return ss;
  33.  
  34. }