mirror of
https://github.com/davisking/dlib.git
synced 2024-11-01 10:14:53 +08:00
59 lines
1.6 KiB
C++
59 lines
1.6 KiB
C++
// The contents of this file are in the public domain. See LICENSE_FOR_EXAMPLE_PROGRAMS.txt
|
|
/*
|
|
This is an example illustrating the use of the running_stats object from the dlib C++
|
|
Library. It is a simple tool for computing basic statistics on a stream of numbers.
|
|
In this example, we sample 100 points from the sinc function and then then compute the
|
|
unbiased sample mean, variance, skewness, and excess kurtosis.
|
|
|
|
*/
|
|
#include <iostream>
|
|
#include <vector>
|
|
#include <dlib/statistics.h>
|
|
|
|
using namespace std;
|
|
using namespace dlib;
|
|
|
|
// Here we define the sinc function so that we may generate sample data. We compute the mean,
|
|
// variance, skewness, and excess kurtosis of this sample data.
|
|
|
|
double sinc(double x)
|
|
{
|
|
if (x == 0)
|
|
return 1;
|
|
return sin(x)/x;
|
|
}
|
|
|
|
int main()
|
|
{
|
|
running_stats<double> rs;
|
|
|
|
double tp1 = 0;
|
|
double tp2 = 0;
|
|
|
|
// We first generate the data and add it sequentially to our running_stats object. We
|
|
// then print every fifth data point.
|
|
for (int x = 1; x <= 100; x++)
|
|
{
|
|
tp1 = x/100.0;
|
|
tp2 = sinc(pi*x/100.0);
|
|
rs.add(tp2);
|
|
|
|
if(x % 5 == 0)
|
|
{
|
|
cout << " x = " << tp1 << " sinc(x) = " << tp2 << endl;
|
|
}
|
|
}
|
|
|
|
// Finally, we compute and print the mean, variance, skewness, and excess kurtosis of
|
|
// our data.
|
|
|
|
cout << endl;
|
|
cout << "Mean: " << rs.mean() << endl;
|
|
cout << "Variance: " << rs.variance() << endl;
|
|
cout << "Skewness: " << rs.skewness() << endl;
|
|
cout << "Excess Kurtosis " << rs.ex_kurtosis() << endl;
|
|
|
|
return 0;
|
|
}
|
|
|