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

msvq.h

00001 // Copyright (C) 1999 Jean-Marc Valin
00002 
00003 #ifndef MSVQ_H
00004 #define MSVQ_H
00005 
00006 #include "kmeans.h"
00007 #include "Object.h"
00008 #include <vector>
00009 
00010 namespace FD {
00011 
00013 class MSVQ : public VQ {
00014   protected:
00015    std::vector<int> stagesSizes;
00016    std::vector<KMeans> stages;
00017   public:
00018    MSVQ(float (*_dist)(const float *, const float*, int) = KMeans::euclidian)
00019       : VQ(_dist)
00020       {}
00021    MSVQ(const std::vector<int> &_stagesSizes, float (*_dist)(const float *, const float*, int) = KMeans::euclidian);
00022 
00023    int ID2Vec(const std::vector<int> &vec) const;
00024 
00025    std::vector<int> Vec2ID(int ID) const;
00026 
00027    int nbClasses() const;
00028 
00029    int nbStages() const {return stagesSizes.size();}
00030 
00031    //const std::vector<float> &operator[] (int i) const;
00032 
00033    void train (const std::vector<float *> &data, int len, bool binary=false);
00034 
00035    int getClassID (const float *v, float *dist_return = NULL) const;
00036 
00037    //void calcDist (const float *v, float *dist_return) const;
00038 
00039    void printOn(std::ostream &out=std::cout) const;
00040    void readFrom (std::istream &in=std::cin);
00041    friend std::istream &operator >> (std::istream &in, MSVQ &mdl);
00042 };
00043 
00044 }//namespace FD
00045 #endif

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