Ignore:
Timestamp:
Oct 5, 2007, 11:03:46 PM (14 years ago)
Author:
Peter
Message:

median and percentile functions now take iterators rather than vectors

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/yat/statistics/utility.cc

    r865 r932  
    5050  double mad(const utility::vector& vec, const bool sorted)
    5151  {
    52     double m = median(vec, sorted);
     52    double m = median(vec.begin(), vec.end(), sorted);
    5353    std::vector<double> ad;
    5454    ad.reserve(vec.size());
     
    5656      ad.push_back(fabs(vec[i]-m));
    5757    std::sort(ad.begin(), ad.end());
    58     return median(ad,true);
     58    return median(ad.begin(), ad.end(),true);
    5959  }
    6060 
    61 
    62   double median(const utility::vector& vec, const bool sorted)
    63   {
    64     if (!sorted){
    65       utility::vector vec_copy(vec);
    66       utility::sort(vec_copy);
    67       return gsl_stats_median_from_sorted_data (vec_copy.gsl_vector_p()->data,
    68                                                 vec_copy.gsl_vector_p()->stride,
    69                                                 vec_copy.gsl_vector_p()->size);
    70     }
    71     return gsl_stats_median_from_sorted_data (vec.gsl_vector_p()->data,
    72                                               vec.gsl_vector_p()->stride,
    73                                               vec.gsl_vector_p()->size);
    74   }
    75 
    76   double percentile(const utility::vector& vec, const double p,
    77                     const bool sorted)
    78   {
    79     if (!sorted){
    80       utility::vector vec_c(vec);
    81       utility::sort(vec_c);
    82       return gsl_stats_quantile_from_sorted_data(vec_c.gsl_vector_p()->data,
    83                                                  vec_c.gsl_vector_p()->stride,
    84                                                  vec_c.gsl_vector_p()->size,
    85                                                  p);
    86     }
    87     return gsl_stats_quantile_from_sorted_data (vec.gsl_vector_p()->data,
    88                                               vec.gsl_vector_p()->stride,
    89                                               vec.gsl_vector_p()->size,
    90                                               p);
    91   }
    9261
    9362  double skewness(const utility::vector& v)
Note: See TracChangeset for help on using the changeset viewer.