Fix standard deviation calculation. This could probably be done using accumulate, multiplies, minus, bind2nd, distance, and compose2, but that's probably less clear.
Something like float fMean = calc_mean( pStart, pEnd ); return sqrtf( accumulate(pStart, pEnd, 0.0f, compose2(multiplies<float>(), bind2nd(minus<float>(), fMean), bind2nd(minus<float>(), fMean))) / distance(pStart, pEnd) ); These are easily templated too, if necessary.
This commit is contained in:
@@ -946,7 +946,7 @@ float calc_stddev( const float *pStart, const float *pEnd )
|
||||
float fDev = 0.0f;
|
||||
for( const float *i=pStart; i != pEnd; ++i )
|
||||
fDev += (*i - fMean) * (*i - fMean);
|
||||
fDev /= distance( pStart, pEnd ) - 1;
|
||||
fDev /= distance( pStart, pEnd );
|
||||
fDev = sqrtf( fDev );
|
||||
|
||||
return fDev;
|
||||
|
||||
Reference in New Issue
Block a user