00001 #ifndef MARSYAS_SIMILARITYMATRIX2_H
00002 #define MARSYAS_SIMILARITYMATRIX2_H
00003
00004 #include "MarSystem.h"
00005 #include "Metric.h"
00006 #include <vector>
00007
00008 namespace Marsyas
00009 {
00023 class SimilarityMatrix: public MarSystem
00024 {
00025 private:
00026 realvec i_featVec_;
00027 realvec j_featVec_;
00028 realvec stackedFeatVecs_;
00029 realvec metricResult_;
00030
00031 realvec sizes_;
00032 realvec vars_;
00033 realvec covMatrix_;
00034 std::vector<realvec> invecs_;
00035
00036 MarControlPtr ctrl_stdDev_;
00037 MarControlPtr ctrl_covMatrix_;
00038 MarControlPtr ctrl_calcCovMatrix_;
00039 MarControlPtr ctrl_normalize_;
00040 MarControlPtr ctrl_sizes_;
00041
00042
00043 void addControls();
00044 void myUpdate(MarControlPtr sender);
00045
00046 public:
00047 enum covMatrixType {
00048 noCovMatrix = 0,
00049 fixedStdDev = 1,
00050 diagCovMatrix = 2,
00051 fullCovMatrix = 3
00052 };
00053
00054 SimilarityMatrix(std::string name);
00055 SimilarityMatrix(const SimilarityMatrix& a);
00056 ~SimilarityMatrix();
00057
00058 MarSystem* clone() const;
00059
00060 void myProcess(realvec& in, realvec& out);
00061 };
00062 }
00063
00064 #endif