RBFWeights.hpp

Go to the documentation of this file.
00001 #ifndef __RBFWEIGHTS_H
00002 #define __RBFWEIGHTS_H
00003 
00004 #include <Random.hpp>
00005 #include <Exception.hpp>
00006 #include <Vector.hpp>
00007 
00008 //#include <iostream>
00009 
00013 class RBFWeights
00014 {
00015 public:
00016     RBFWeights(unsigned int size) 
00017     { 
00018         m_size = size;
00019         m_weights = new double[size]; 
00020         if(m_weights == 0)
00021             throw Exception("out of memory");
00022 
00023         for(unsigned int i=0; i<size; i++)
00024             m_weights[i] = Random::Randomize(); // between -1.0 and 1.0
00025     }
00026 
00027     ~RBFWeights() { delete [] m_weights; }
00028 
00029     double GetWeight(unsigned int i) { return m_weights[i]; }
00030     void   SetWeight(unsigned int i, double w) { m_weights[i] = w; }
00031 
00032     void   SetSignal(double i) { m_signal = i; }
00033     double GetWeightedSignal(unsigned int i) { return m_weights[i] * m_signal; }  // här kan man optimera hastighet om man sparar resultatet.
00034 
00035     void   UpdateWeights(Vector & etaDiff)
00036     {
00037         //std::cout << "A: " << m_signal << " " ;
00038 
00039         Vector::iterator it = etaDiff.begin();
00040         for(unsigned int i=0; it!=etaDiff.end(); it++, i++)
00041             m_weights[i] += (*it) * m_signal;
00042     }
00043 
00044 private:
00045     unsigned int m_size;
00046     double *     m_weights;
00047     double       m_signal;
00048 };
00049 
00050 
00051 #endif

Generated on Mon Mar 22 16:40:48 2004 for GNG_GL by doxygen 1.3.6