From e97aba03a3054eab971444ceeccb5ddcd21e0953 Mon Sep 17 00:00:00 2001 From: Stephen Birarda Date: Tue, 12 Mar 2013 10:09:07 -0700 Subject: [PATCH] move StdDev to shared library --- interface/src/Audio.cpp | 5 +++-- interface/src/Util.cpp | 42 ------------------------------------ interface/src/Util.h | 12 ----------- interface/src/main.cpp | 24 --------------------- shared/src/StdDev.cpp | 48 +++++++++++++++++++++++++++++++++++++++++ shared/src/StdDev.h | 27 +++++++++++++++++++++++ 6 files changed, 78 insertions(+), 80 deletions(-) create mode 100644 shared/src/StdDev.cpp create mode 100644 shared/src/StdDev.h diff --git a/interface/src/Audio.cpp b/interface/src/Audio.cpp index 60f28ca5df..cd839fb6fe 100644 --- a/interface/src/Audio.cpp +++ b/interface/src/Audio.cpp @@ -12,10 +12,11 @@ #include #include #include +#include +#include +#include #include "Audio.h" #include "Util.h" -#include -#include "UDPSocket.h" Oscilloscope * scope; diff --git a/interface/src/Util.cpp b/interface/src/Util.cpp index 4ef06dfed4..fdd6feacd0 100644 --- a/interface/src/Util.cpp +++ b/interface/src/Util.cpp @@ -13,48 +13,6 @@ #include "world.h" #include "Util.h" -// -// Standard Deviation Object -// - -const int MAX_STDEV_SAMPLES = 1000; // Don't add more than this number of samples. - -StDev::StDev() { - data = new float[MAX_STDEV_SAMPLES]; - sampleCount = 0; -} - -void StDev::reset() { - sampleCount = 0; -} - -void StDev::addValue(float v) { - data[sampleCount++] = v; - if (sampleCount == MAX_STDEV_SAMPLES) sampleCount = 0; -} - -float StDev::getAverage() { - float average = 0; - for (int i = 0; i < sampleCount; i++) { - average += data[i]; - } - if (sampleCount > 0) - return average/(float)sampleCount; - else return 0; -} - -float StDev::getStDev() { - float average = getAverage(); - float stdev = 0; - for (int i = 0; i < sampleCount; i++) { - stdev += powf(data[i] - average, 2); - } - if (sampleCount > 1) - return sqrt(stdev/(float)(sampleCount - 1.0)); - else - return 0; -} - // Return the azimuth angle in degrees between two points. float azimuth_to(glm::vec3 head_pos, glm::vec3 source_pos) { return atan2(head_pos.x - source_pos.x, head_pos.z - source_pos.z) * 180 / PI; diff --git a/interface/src/Util.h b/interface/src/Util.h index 3b91223b35..c83504a779 100644 --- a/interface/src/Util.h +++ b/interface/src/Util.h @@ -24,17 +24,5 @@ void drawvec3(int x, int y, float scale, float rotate, float thick, int mono, gl float r=1.0, float g=1.0, float b=1.0); double diffclock(timeval *clock1,timeval *clock2); -class StDev { -public: - StDev(); - void reset(); - void addValue(float v); - float getAverage(); - float getStDev(); - int getSamples() {return sampleCount;}; -private: - float * data; - int sampleCount; -}; #endif diff --git a/interface/src/main.cpp b/interface/src/main.cpp index abe1206afa..f1e69839a0 100644 --- a/interface/src/main.cpp +++ b/interface/src/main.cpp @@ -915,30 +915,6 @@ int main(int argc, char** argv) printf("Failed lookup domainserver\n"); } } else printf("Using static domainserver IP: %s\n", DOMAIN_IP); - - printf("Testing stats math... "); - StDev stdevtest; - stdevtest.reset(); - stdevtest.addValue(1345); - stdevtest.addValue(1301); - stdevtest.addValue(1368); - stdevtest.addValue(1322); - stdevtest.addValue(1310); - stdevtest.addValue(1370); - stdevtest.addValue(1318); - stdevtest.addValue(1350); - stdevtest.addValue(1303); - stdevtest.addValue(1299); - - if (stdevtest.getSamples() != 10) - printf("Samples=FAIL "); - - if (floor(stdevtest.getAverage()*100.0) != 132859.0) - printf("Average=FAIL "); - - if (floor(stdevtest.getStDev()*100.0) != 2746.0) - printf("Stdev=FAIL "); - printf("\n"); // the callback for our instance of AgentList is attachNewHeadToAgent agentList.linkedDataCreateCallback = &attachNewHeadToAgent; diff --git a/shared/src/StdDev.cpp b/shared/src/StdDev.cpp new file mode 100644 index 0000000000..040f51dd50 --- /dev/null +++ b/shared/src/StdDev.cpp @@ -0,0 +1,48 @@ +// +// StdDev.cpp +// hifi +// +// Created by Philip Rosedale on 3/12/13. +// +// + +#include "StdDev.h" +#include + +const int MAX_STDEV_SAMPLES = 1000; // Don't add more than this number of samples. + +StDev::StDev() { + data = new float[MAX_STDEV_SAMPLES]; + sampleCount = 0; +} + +void StDev::reset() { + sampleCount = 0; +} + +void StDev::addValue(float v) { + data[sampleCount++] = v; + if (sampleCount == MAX_STDEV_SAMPLES) sampleCount = 0; +} + +float StDev::getAverage() { + float average = 0; + for (int i = 0; i < sampleCount; i++) { + average += data[i]; + } + if (sampleCount > 0) + return average/(float)sampleCount; + else return 0; +} + +float StDev::getStDev() { + float average = getAverage(); + float stdev = 0; + for (int i = 0; i < sampleCount; i++) { + stdev += powf(data[i] - average, 2); + } + if (sampleCount > 1) + return sqrt(stdev/(float)(sampleCount - 1.0)); + else + return 0; +} \ No newline at end of file diff --git a/shared/src/StdDev.h b/shared/src/StdDev.h new file mode 100644 index 0000000000..2c0d0485c4 --- /dev/null +++ b/shared/src/StdDev.h @@ -0,0 +1,27 @@ +// +// StdDev.h +// hifi +// +// Created by Philip Rosedale on 3/12/13. +// +// + +#ifndef __hifi__StdDev__ +#define __hifi__StdDev__ + +#include + +class StDev { + public: + StDev(); + void reset(); + void addValue(float v); + float getAverage(); + float getStDev(); + int getSamples() {return sampleCount;}; + private: + float * data; + int sampleCount; +}; + +#endif /* defined(__hifi__StdDev__) */