contains rudimentary statistical functions

Files at this revision

API Documentation at this revision

Comitter:
bclaus
Date:
Mon Feb 25 19:41:26 2013 +0000
Commit message:
initial commit of stats library;

Changed in this revision

normstat.cpp Show annotated file Show diff for this revision Revisions of this file
normstat.h Show annotated file Show diff for this revision Revisions of this file
diff -r 000000000000 -r 63c55a3cd73c normstat.cpp
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/normstat.cpp	Mon Feb 25 19:41:26 2013 +0000
@@ -0,0 +1,33 @@
+  #include "normstat.h"
+  
+  
+  
+
+
+double normpdf(double x, double m, double s)
+{
+
+    return (1/(s*sqrt(2*pi)))*exp(-pow((x-m),2)/(2*pow(s,2)));
+
+}
+  
+normrand::normrand(double m, double s){
+    mu = m;
+    sigma = s; 
+}
+  
+double normrand::draw()
+{
+    double r1 = (std::rand() + 1.0)/(RAND_MAX + 1.0); // gives equal distribution in (0, 1]
+    double r2 = (std::rand() + 1.0)/(RAND_MAX + 1.0);
+    return mu + sigma * std::sqrt(-2*std::log(r1))*std::cos(2*pi*r2);
+}
+
+double normrand::draw(double m, double s)
+{
+    this->mu=m;
+    this->sigma=s;
+    double r1 = (std::rand() + 1.0)/(RAND_MAX + 1.0); // gives equal distribution in (0, 1]
+    double r2 = (std::rand() + 1.0)/(RAND_MAX + 1.0);
+    return mu + sigma * std::sqrt(-2*std::log(r1))*std::cos(2*pi*r2);
+}
\ No newline at end of file
diff -r 000000000000 -r 63c55a3cd73c normstat.h
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/normstat.h	Mon Feb 25 19:41:26 2013 +0000
@@ -0,0 +1,33 @@
+
+
+#ifndef __NORMSTAT_H
+#define __NORMSTAT_H
+#include "mbed.h"
+#include <cstdlib>   // for rand
+#include <cmath>     // for atan, sqrt, log, cos
+#include <algorithm> // for generate_n
+ 
+double const pi = 4*std::atan(1.0);
+ //double const pi = 3.141592653589793;
+ 
+ 
+// simple function for normal distribution
+double normpdf(double x, double m, double s);  //returns f(x|m,s)
+    
+
+//Generates a normally distributed random number
+//taken from http://rosettacode.org/wiki/Random_numbers#C.2B.2B
+//on 21/02/2013
+//by Brian Claus
+class normrand
+{
+public:
+  normrand(double m, double s);
+  
+  double draw(); // returns a single normally distributed number
+  double draw(double m, double s); // returns a single normally distributed number
+
+private:
+  double mu, sigma;
+};
+#endif
\ No newline at end of file