00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019 #ifndef NMF_H
00020 #define NMF_H
00021
00022 #include "Typedefs.h"
00023 #include "Debug.h"
00024
00053 class NMF {
00054 protected:
00055
00056 int _inputSize;
00057 int _componentCount;
00058
00059 int _iterationCount;
00060
00061 Real _epsilon;
00062
00063
00064 MatrixXR _xOverWH;
00065 MatrixXR _norms;
00066
00067 public:
00080 NMF(int inputSize = 1024, int componentCount = 3, int iterationCount = 10, Real epsilon = 1e-9);
00081
00085 ~NMF();
00086
00087 void reset();
00088 void setup();
00089
00109 void process(const MatrixXR& frames, MatrixXR* gains, MatrixXR* components);
00110
00117 int inputSize() const;
00118
00125 void setInputSize( int size, bool callSetup = true );
00126
00133 int componentCount() const;
00134
00141 void setComponentCount( int count, bool callSetup = true );
00142
00149 int iterationCount() const;
00150
00157 void setIterationCount( int count, bool callSetup = true );
00158
00165 Real epsilon() const;
00166
00172 void setEpsilon( Real epsilon, bool callSetup = true );
00173
00174 };
00175
00176 #endif