diff options
author | anastas <anastas@221aa14e-8319-0410-a670-987f0aec2ac5> | 2007-02-04 23:09:12 +0000 |
---|---|---|
committer | anastas <anastas@221aa14e-8319-0410-a670-987f0aec2ac5> | 2007-02-04 23:09:12 +0000 |
commit | 82a5715de7e2ad1448ab98cd7081c8cca5b7e763 (patch) | |
tree | 47a9789c714ec5d9be790a5cc285294a527692ce /gr-trellis/src/lib/trellis_viterbi_combined_X.cc.t | |
parent | 6bfcea09c4fe36804294f96131342aa80a854311 (diff) |
added support for irregular FSMs
git-svn-id: http://gnuradio.org/svn/gnuradio/trunk@4371 221aa14e-8319-0410-a670-987f0aec2ac5
Diffstat (limited to 'gr-trellis/src/lib/trellis_viterbi_combined_X.cc.t')
-rw-r--r-- | gr-trellis/src/lib/trellis_viterbi_combined_X.cc.t | 14 |
1 files changed, 7 insertions, 7 deletions
diff --git a/gr-trellis/src/lib/trellis_viterbi_combined_X.cc.t b/gr-trellis/src/lib/trellis_viterbi_combined_X.cc.t index e693c1d682..33f629099b 100644 --- a/gr-trellis/src/lib/trellis_viterbi_combined_X.cc.t +++ b/gr-trellis/src/lib/trellis_viterbi_combined_X.cc.t @@ -86,8 +86,8 @@ void void viterbi_algorithm_combined(int I, int S, int O, const std::vector<int> &NS, const std::vector<int> &OS, - const std::vector<int> &PS, - const std::vector<int> &PI, + const std::vector< std::vector<int> > &PS, + const std::vector< std::vector<int> > &PI, int K, int S0,int SK, int D, @@ -119,9 +119,9 @@ void viterbi_algorithm_combined(int I, int S, int O, for(int j=0;j<S;j++) { // for each next state do ACS minm=INF; minmi=0; - for(int i=0;i<I;i++) { + for(int i=0;i<PS[j].size();i++) { int i0 = j*I+i; - if((mm=alpha[alphai*S+PS[i0]]+metric[OS[PS[i0]*I+PI[i0]]])<minm) + if((mm=alpha[alphai*S+PS[j][i]]+metric[OS[PS[j][i]*I+PI[j][i]]])<minm) minm=mm,minmi=i; } trace[k*S+j]=minmi; @@ -145,9 +145,9 @@ void viterbi_algorithm_combined(int I, int S, int O, } for(int k=K-1;k>=0;k--) { // traceback - int i0=st*I+trace[k*S+st]; - out[k]= (@TYPE@) PI[i0]; - st=PS[i0]; + int i0=trace[k*S+st]; + out[k]= (@TYPE@) PI[st][i0]; + st=PS[st][i0]; } delete [] metric; |