我將公式轉換爲C++。這是正確的運行標準偏差。計算運行標準偏差
this->runningStandardDeviation = (this->sumOfProcessedSquaredSamples - sumSquaredDividedBySampleCount)/(sampleCount - 1);
以下是完整的功能:
void BM_Functions::standardDeviationForRunningSamples (float samples [], int sampleCount)
{
// update the running process samples count
this->totalSamplesProcessed += sampleCount;
// get the mean of the samples
double mean = meanForSamples(samples, sampleCount);
// sum the deviations
// sum the squared deviations
for (int i = 0; i < sampleCount; i++)
{
// update the deviation sum of processed samples
double deviation = samples[i] - mean;
this->sumOfProcessedSamples += deviation;
// update the squared deviations sum
double deviationSquared = deviation * deviation;
this->sumOfProcessedSquaredSamples += deviationSquared;
}
// get the sum squared
double sumSquared = this->sumOfProcessedSamples * this->sumOfProcessedSamples;
// get the sum/N
double sumSquaredDividedBySampleCount = sumSquared/this->totalSamplesProcessed;
this->runningStandardDeviation = sqrt((this->sumOfProcessedSquaredSamples - sumSquaredDividedBySampleCount)/(sampleCount - 1));
}
'sumOfProcessedSquaredSamples - sumSquaredDividedBySampleCount'看起來可疑,您可以加入一些意見,以顯示你想要達到的目標每個變量是什麼意思?謝謝。 – cxyzs7
也不應該有一個平方根的地方? – user829755
謝謝,錯過了平方根。爲什麼方程顯示σ*σ= ...而不是σ= sqrt(....)? – jarryd