mirror of
https://github.com/RobTillaart/Arduino.git
synced 2024-10-03 18:09:02 -04:00
96 lines
2.1 KiB
C++
96 lines
2.1 KiB
C++
//
|
|
// FILE: hist_test.ino
|
|
// AUTHOR: Rob Tillaart
|
|
// VERSION: 0.1.1
|
|
// DATE: 2012-12-23
|
|
//
|
|
// PUPROSE: test histogram frequency
|
|
//
|
|
|
|
#include "histogram.h"
|
|
|
|
// float b[] = { 0, 100, 200, 300, 325, 350, 375, 400, 500, 600, 700, 800, 900, 1000 };
|
|
|
|
// boundaries does not need to be equally distributed.
|
|
float b[] = {
|
|
0, 100, 200, 300, 325, 350, 375 };
|
|
|
|
Histogram hist(7, b);
|
|
|
|
uint32_t lastTime = 0;
|
|
const uint32_t threshold = 25; // milliseconds, for updating display
|
|
|
|
void setup()
|
|
{
|
|
Serial.begin(115200);
|
|
Serial.println(__FILE__);
|
|
Serial.print("\nHistogram version: ");
|
|
Serial.println(HISTOGRAM_LIB_VERSION);
|
|
|
|
Serial.print("# buckets: ");
|
|
Serial.println(hist.size());
|
|
|
|
for (int i = 0; i < hist.size()-1; i++)
|
|
{
|
|
Serial.print("\t");
|
|
Serial.print(b[i], 2);
|
|
}
|
|
Serial.println();
|
|
|
|
for (int i = 0; i < hist.size()-1; i++)
|
|
{
|
|
Serial.print("\t");
|
|
Serial.print(hist.find(b[i]));
|
|
}
|
|
Serial.println();
|
|
}
|
|
|
|
void loop()
|
|
{
|
|
// choose a "generator" for histogram data
|
|
// int x = analogRead(A0);
|
|
|
|
int x = random(600) - 50; // below lower limit
|
|
|
|
// int x = random(25);
|
|
// x = x*x;
|
|
|
|
|
|
// Serial.print(x);
|
|
// Serial.print("\t");
|
|
// Serial.println(hist.find(x));
|
|
hist.add(x);
|
|
|
|
// update output
|
|
uint32_t now = millis();
|
|
if (now - lastTime > threshold)
|
|
{
|
|
lastTime = now;
|
|
Serial.print(hist.count());
|
|
for (int i = 0; i < hist.size(); i++)
|
|
{
|
|
Serial.print("\t");
|
|
// gives percentage per bucket
|
|
// Serial.print(hist.bucket(i));
|
|
Serial.print(hist.frequency(i), 2);
|
|
}
|
|
// quartiles
|
|
// to get at least 25% of the values you must count all values < hist.VAL(0.25);
|
|
Serial.print("\t");
|
|
Serial.print(hist.VAL(0.25), 2);
|
|
// to get at least 50% of the values you must count all values < hist.VAL(0.50);
|
|
Serial.print("\t");
|
|
Serial.print(hist.VAL(0.50), 2);
|
|
Serial.print("\t");
|
|
Serial.print(hist.VAL(0.75), 2);
|
|
Serial.print("\t");
|
|
Serial.print(hist.VAL(1.0), 2);
|
|
Serial.println();
|
|
|
|
if (hist.count() > 10000UL) hist.clear();
|
|
}
|
|
}
|
|
|
|
|
|
// -- END OF FILE --
|