Main Page | Namespace List | Class Hierarchy | Class List | Directories | File List | Namespace Members | Class Members

mean.h

00001 // Copyright (C) 1998-1999  Jean-Marc Valin
00002 #ifndef MEAN_H
00003 #define MEAN_H
00004 
00005 #include <math.h>
00006 #include <vector>
00007 #include "Object.h"
00008 #include "ObjectParser.h"
00009 #include "misc.h"
00010 #include "Vector.h"
00011 
00012 namespace FD {
00013 
00014 class Mean : public Vector<double>
00015 {
00016 protected:
00017    int mode;
00018    int accum_count;
00019    int dimension;
00020 public:
00021    enum Mode {accum=0, real, rotated, inverted};
00022    Mean() 
00023       : Vector<double>() 
00024       , mode(accum)
00025       , accum_count(0)
00026       , dimension(0)
00027    {}
00028 
00029    Mean(int n, const double &x = 0) 
00030       : Vector<double>(n, x)
00031       , mode(accum)
00032       , accum_count(0)
00033       , dimension(n)
00034    {}
00035 
00036    int getAccum() {return accum_count;}
00037 
00038    void accumFrame(const float *v)
00039    {
00040       for (int i=0;i<dimension;i++)
00041          this->operator[] (i) += v[i];
00042       accum_count++;
00043    }
00044 
00045    void accumFrame(const std::vector<float> &v)
00046    {
00047       for (int i=0;i<v.size();i++)
00048          this->operator[] (i) += v[i];
00049       accum_count++;
00050    }
00051 
00052    void toReal()
00053    {
00054       double accum_1 = 1.0/accum_count;
00055       for (int i=0;i<dimension;i++)
00056          this->operator[] (i) *= accum_1;
00057       mode = real;
00058    }
00059 
00060    void resetToAccum()
00061    {
00062       for (int i=0;i<dimension;i++)
00063          this->operator[] (i) = 0.0;
00064       mode = accum;
00065       accum_count = 0;
00066    }
00067 
00069    virtual void printOn(std::ostream &out=std::cout) const;
00070 
00072    void readFrom (std::istream &in=std::cin);
00073 
00075    friend std::istream &operator >> (std::istream &in, Mean &cov);
00076 
00077 };
00078 
00079 }//namespace FD
00080 
00081 #endif

Generated on Wed Oct 5 14:28:55 2005 for FlowDesigner by  doxygen 1.4.4