30 EYLÜL 2011, Cuma
hesaplamak ve C boost kullanarak örnek bir vektör standart sapma
Bir şekilde bir vektör örnekleri boost kullanarak içeren için ortalama ve standart sapmayı hesaplamak için var mı? Veya bir akümülatör oluşturun ve içine vektör beslemek zorunda mıyım?
CEVAP
30 EYLÜL 2011, Cuma
Eğer Boost daha spesifik fonksiyonları var mı bilmiyorum, ama standart kütüphane ile yapabilirsin.
std::vector<double> v
, Bu verilen naif bir şekilde
double sum = std::accumulate(v.begin(), v.end(), 0.0);
double mean = sum / v.size();
double sq_sum = std::inner_product(v.begin(), v.end(), v.begin(), 0.0);
double stdev = std::sqrt(sq_sum / v.size() - mean * mean);
Bu büyük veya küçük değerler için taşma ya da üstünde maruz kalabilir. Biraz daha iyi standart sapmayı hesaplamak için bir yoldur:
std::vector<double> diff(v.size());
std::transform(v.begin(), v.end(), diff.begin(),
std::bind2nd(std::minus<double>(), mean));
double sq_sum = std::inner_product(diff.begin(), diff.end(), diff.begin(), 0.0);
double stdev = std::sqrt(sq_sum / v.size());
Bunu Paylaş:
Örnek Boost kullanarak::tam bir C Even...
Örnek: Faaliyet ve Hizmet kullanarak M...
Nasıl PHP kullanarak iki tarih arasınd...
Nasıl uyumlu hafıza sadece standart kü...
Kullanarak temel örnek .() ajax JSONP ...