hesaplamak ve C boost kullanarak örnek bir vektör standart sapma | Netgez.com
SORU
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ÅŸ:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VÄ°DEO

Rastgele Yazarlar

  • 24 Канал

    24 КанаÐ

    5 ÅžUBAT 2006
  • Android Developers

    Android Deve

    9 Kasım 2007
  • ShoSho

    ShoSho

    20 Ocak 2010