Mercurial > hg > pyin
diff SparseHMM.h @ 130:080fe18f5ebf fixedlag
refactored Viterbi
* perhaps I even discovered a bug (probablity sum was not reset for every frame)
author | Matthias Mauch <mail@matthiasmauch.net> |
---|---|
date | Fri, 03 Jul 2015 12:22:44 +0100 |
parents | 5945b8905d1f |
children | b877df85ad9e |
line wrap: on
line diff
--- a/SparseHMM.h Wed Jul 01 19:13:05 2015 +0100 +++ b/SparseHMM.h Fri Jul 03 12:22:44 2015 +0100 @@ -15,21 +15,37 @@ #define _SPARSEHMM_H_ #include <vector> +#include <queue> #include <cstdio> using std::vector; +using std::deque; using std::pair; class SparseHMM { public: - virtual const std::vector<double> calculateObsProb(const vector<pair<double, double> >); - const std::vector<int> decodeViterbi(std::vector<vector<double> > obs, - vector<double> *scale); - vector<double> init; - vector<size_t> from; - vector<size_t> to; - vector<double> transProb; + SparseHMM(); + virtual const std::vector<double> + calculateObsProb(const vector<pair<double, double> >); + virtual void build(); + const std::vector<int> decodeViterbi(std::vector<vector<double> > obs); + void initialise(vector<double> firstObs); + int process(vector<double> newObs); + vector<int> finalise(); + // "sparse" HMM definition + int m_nState; + int m_nTrans; + vector<double> m_init; + vector<size_t> m_from; + vector<size_t> m_to; + vector<double> m_transProb; + + // variables for decoding + deque<double> m_scale; + deque<vector<int> > m_psi; + vector<double> m_delta; + vector<double> m_oldDelta; }; #endif