Histogram.cc
author viric <viriketo@gmail.com>
Sun, 24 Apr 2011 18:47:28 +0200
changeset 2 5cdb891abc1e
parent 0 6b8091ca909a
permissions -rw-r--r--
Almenys faig que compili amb un g++ -I. -lnetpbm -o rektigi *.cc
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
0
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
     1
#include "Histogram.h"
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
     2
#include <math.h>
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
     3
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
     4
inline double sqr(double x) {return(x*x);}
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
     5
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
     6
void Histogram::calc_mean()
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
     7
{
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
     8
	int total_weight = 0;
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
     9
	int i;
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    10
	for(i = 0; i < rows; i++)
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    11
		total_weight = total_weight + weights[i];
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    12
	mean = (double) total_weight / (double) rows;
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    13
}
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    14
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    15
void Histogram::calc_variance()
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    16
{
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    17
	double sum = 0;
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    18
	for(int i = 0; i < rows; i++)
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    19
		sum += sqr(weights[i] - mean);
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    20
	variance = (double) sum / (double) rows;
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    21
}
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    22
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    23
void Histogram::calc_std_dev()
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    24
{
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    25
	std_dev = sqrt(variance);
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    26
}
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    27
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    28
void Histogram::calcStatistics()
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    29
{
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    30
	calc_mean();
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    31
	calc_variance();
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    32
	calc_std_dev();
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    33
}
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    34
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    35
Histogram::Histogram(int numrows)
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    36
{
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    37
	rows = numrows;
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    38
	weights = new int[numrows];
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    39
}
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    40
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    41
Histogram::~Histogram()
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    42
{
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    43
	delete[] weights;
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    44
}