summaryrefslogtreecommitdiff
path: root/gr-trellis
diff options
context:
space:
mode:
Diffstat (limited to 'gr-trellis')
-rw-r--r--gr-trellis/src/lib/trellis_viterbi_X.cc.t11
-rw-r--r--gr-trellis/src/lib/trellis_viterbi_X.h.t2
-rw-r--r--gr-trellis/src/lib/trellis_viterbi_b.cc11
-rw-r--r--gr-trellis/src/lib/trellis_viterbi_b.h2
-rw-r--r--gr-trellis/src/lib/trellis_viterbi_combined_X.cc.t29
-rw-r--r--gr-trellis/src/lib/trellis_viterbi_combined_X.h.t22
-rw-r--r--gr-trellis/src/lib/trellis_viterbi_combined_X.i.t12
-rw-r--r--gr-trellis/src/lib/trellis_viterbi_combined_b.cc29
-rw-r--r--gr-trellis/src/lib/trellis_viterbi_combined_b.h22
-rw-r--r--gr-trellis/src/lib/trellis_viterbi_combined_b.i12
-rw-r--r--gr-trellis/src/lib/trellis_viterbi_combined_i.cc29
-rw-r--r--gr-trellis/src/lib/trellis_viterbi_combined_i.h22
-rw-r--r--gr-trellis/src/lib/trellis_viterbi_combined_i.i12
-rw-r--r--gr-trellis/src/lib/trellis_viterbi_combined_s.cc29
-rw-r--r--gr-trellis/src/lib/trellis_viterbi_combined_s.h22
-rw-r--r--gr-trellis/src/lib/trellis_viterbi_combined_s.i12
-rw-r--r--gr-trellis/src/lib/trellis_viterbi_i.cc11
-rw-r--r--gr-trellis/src/lib/trellis_viterbi_i.h2
-rw-r--r--gr-trellis/src/lib/trellis_viterbi_s.cc11
-rw-r--r--gr-trellis/src/lib/trellis_viterbi_s.h2
20 files changed, 156 insertions, 148 deletions
diff --git a/gr-trellis/src/lib/trellis_viterbi_X.cc.t b/gr-trellis/src/lib/trellis_viterbi_X.cc.t
index 8f02320d6..01a05ef14 100644
--- a/gr-trellis/src/lib/trellis_viterbi_X.cc.t
+++ b/gr-trellis/src/lib/trellis_viterbi_X.cc.t
@@ -52,8 +52,8 @@ trellis_make_@BASE_NAME@ (
d_FSM (FSM),
d_K (K),
d_S0 (S0),
- d_SK (SK),
- d_trace(FSM.S()*K)
+ d_SK (SK)//,
+ //d_trace(FSM.S()*K)
{
set_relative_rate (1.0 / ((double) d_FSM.O()));
set_output_multiple (d_K);
@@ -81,9 +81,10 @@ void viterbi_algorithm(int I, int S, int O,
const std::vector<int> &PI,
int K,
int S0,int SK,
- const float *in, @TYPE@ *out,
- std::vector<int> &trace)
+ const float *in, @TYPE@ *out)//,
+ //std::vector<int> &trace)
{
+ std::vector<int> trace(S*K);
std::vector<float> alpha(S*2);
int alphai;
float norm,mm,minm;
@@ -158,7 +159,7 @@ int
const float *in = (const float *) input_items[m];
@TYPE@ *out = (@TYPE@ *) output_items[m];
for (int n=0;n<nblocks;n++) {
- viterbi_algorithm(d_FSM.I(),d_FSM.S(),d_FSM.O(),d_FSM.NS(),d_FSM.OS(),d_FSM.PS(),d_FSM.PI(),d_K,d_S0,d_SK,&(in[n*d_K*d_FSM.O()]),&(out[n*d_K]),d_trace);
+ viterbi_algorithm(d_FSM.I(),d_FSM.S(),d_FSM.O(),d_FSM.NS(),d_FSM.OS(),d_FSM.PS(),d_FSM.PI(),d_K,d_S0,d_SK,&(in[n*d_K*d_FSM.O()]),&(out[n*d_K]));//,d_trace);
}
}
diff --git a/gr-trellis/src/lib/trellis_viterbi_X.h.t b/gr-trellis/src/lib/trellis_viterbi_X.h.t
index f06fdfdcd..05926851a 100644
--- a/gr-trellis/src/lib/trellis_viterbi_X.h.t
+++ b/gr-trellis/src/lib/trellis_viterbi_X.h.t
@@ -45,7 +45,7 @@ class @NAME@ : public gr_block
int d_K;
int d_S0;
int d_SK;
- std::vector<int> d_trace;
+ //std::vector<int> d_trace;
friend @SPTR_NAME@ trellis_make_@BASE_NAME@ (
const fsm &FSM,
diff --git a/gr-trellis/src/lib/trellis_viterbi_b.cc b/gr-trellis/src/lib/trellis_viterbi_b.cc
index ce2778aff..a9fc0bfab 100644
--- a/gr-trellis/src/lib/trellis_viterbi_b.cc
+++ b/gr-trellis/src/lib/trellis_viterbi_b.cc
@@ -52,8 +52,8 @@ trellis_viterbi_b::trellis_viterbi_b (
d_FSM (FSM),
d_K (K),
d_S0 (S0),
- d_SK (SK),
- d_trace(FSM.S()*K)
+ d_SK (SK)//,
+ //d_trace(FSM.S()*K)
{
set_relative_rate (1.0 / ((double) d_FSM.O()));
set_output_multiple (d_K);
@@ -81,9 +81,10 @@ void viterbi_algorithm(int I, int S, int O,
const std::vector<int> &PI,
int K,
int S0,int SK,
- const float *in, unsigned char *out,
- std::vector<int> &trace)
+ const float *in, unsigned char *out)//,
+ //std::vector<int> &trace)
{
+ std::vector<int> trace(S*K);
std::vector<float> alpha(S*2);
int alphai;
float norm,mm,minm;
@@ -158,7 +159,7 @@ trellis_viterbi_b::general_work (int noutput_items,
const float *in = (const float *) input_items[m];
unsigned char *out = (unsigned char *) output_items[m];
for (int n=0;n<nblocks;n++) {
- viterbi_algorithm(d_FSM.I(),d_FSM.S(),d_FSM.O(),d_FSM.NS(),d_FSM.OS(),d_FSM.PS(),d_FSM.PI(),d_K,d_S0,d_SK,&(in[n*d_K*d_FSM.O()]),&(out[n*d_K]),d_trace);
+ viterbi_algorithm(d_FSM.I(),d_FSM.S(),d_FSM.O(),d_FSM.NS(),d_FSM.OS(),d_FSM.PS(),d_FSM.PI(),d_K,d_S0,d_SK,&(in[n*d_K*d_FSM.O()]),&(out[n*d_K]));//,d_trace);
}
}
diff --git a/gr-trellis/src/lib/trellis_viterbi_b.h b/gr-trellis/src/lib/trellis_viterbi_b.h
index c1c359b12..c2e2070bf 100644
--- a/gr-trellis/src/lib/trellis_viterbi_b.h
+++ b/gr-trellis/src/lib/trellis_viterbi_b.h
@@ -45,7 +45,7 @@ class trellis_viterbi_b : public gr_block
int d_K;
int d_S0;
int d_SK;
- std::vector<int> d_trace;
+ //std::vector<int> d_trace;
friend trellis_viterbi_b_sptr trellis_make_viterbi_b (
const fsm &FSM,
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 de2079ad0..76b7fb38a 100644
--- a/gr-trellis/src/lib/trellis_viterbi_combined_X.cc.t
+++ b/gr-trellis/src/lib/trellis_viterbi_combined_X.cc.t
@@ -34,35 +34,35 @@ static const float INF = 1.0e9;
@SPTR_NAME@
trellis_make_@BASE_NAME@ (
const fsm &FSM,
- int D,
- const std::vector<float> &TABLE,
int K,
int S0,
int SK,
+ int D,
+ const std::vector<float> &TABLE,
trellis_metric_type_t TYPE)
{
- return @SPTR_NAME@ (new @NAME@ (FSM,D,TABLE,K,S0,SK,TYPE));
+ return @SPTR_NAME@ (new @NAME@ (FSM,K,S0,SK,D,TABLE,TYPE));
}
@NAME@::@NAME@ (
const fsm &FSM,
- int D,
- const std::vector<float> &TABLE,
int K,
int S0,
int SK,
+ int D,
+ const std::vector<float> &TABLE,
trellis_metric_type_t TYPE)
: gr_block ("@BASE_NAME@",
gr_make_io_signature (1, -1, sizeof (float)),
gr_make_io_signature (1, -1, sizeof (@TYPE@))),
d_FSM (FSM),
- d_D (D),
- d_TABLE (TABLE),
d_K (K),
d_S0 (S0),
d_SK (SK),
- d_TYPE (TYPE),
- d_trace(FSM.S()*K)
+ d_D (D),
+ d_TABLE (TABLE),
+ d_TYPE (TYPE)//,
+ //d_trace(FSM.S()*K)
{
set_relative_rate (1.0 / ((double) d_D));
set_output_multiple (d_K);
@@ -88,14 +88,15 @@ void viterbi_algorithm_combined(int I, int S, int O,
const std::vector<int> &OS,
const std::vector<int> &PS,
const std::vector<int> &PI,
- int D,
- const std::vector<float> &TABLE,
int K,
int S0,int SK,
+ int D,
+ const std::vector<float> &TABLE,
trellis_metric_type_t TYPE,
- const float *in, @TYPE@ *out,
- std::vector<int> &trace)
+ const float *in, @TYPE@ *out)//,
+ //std::vector<int> &trace)
{
+ std::vector<int> trace(S*K);
std::vector<float> alpha(S*2);
float *metric = new float[O];
int alphai;
@@ -173,7 +174,7 @@ int
const float *in = (const float *) input_items[m];
@TYPE@ *out = (@TYPE@ *) output_items[m];
for (int n=0;n<nblocks;n++) {
- viterbi_algorithm_combined(d_FSM.I(),d_FSM.S(),d_FSM.O(),d_FSM.NS(),d_FSM.OS(),d_FSM.PS(),d_FSM.PI(),d_D,d_TABLE,d_K,d_S0,d_SK,d_TYPE,&(in[n*d_K*d_D]),&(out[n*d_K]),d_trace);
+ viterbi_algorithm_combined(d_FSM.I(),d_FSM.S(),d_FSM.O(),d_FSM.NS(),d_FSM.OS(),d_FSM.PS(),d_FSM.PI(),d_K,d_S0,d_SK,d_D,d_TABLE,d_TYPE,&(in[n*d_K*d_D]),&(out[n*d_K]));//,d_trace);
}
}
diff --git a/gr-trellis/src/lib/trellis_viterbi_combined_X.h.t b/gr-trellis/src/lib/trellis_viterbi_combined_X.h.t
index 14f565202..172a710d7 100644
--- a/gr-trellis/src/lib/trellis_viterbi_combined_X.h.t
+++ b/gr-trellis/src/lib/trellis_viterbi_combined_X.h.t
@@ -34,52 +34,52 @@ typedef boost::shared_ptr<@NAME@> @SPTR_NAME@;
@SPTR_NAME@ trellis_make_@BASE_NAME@ (
const fsm &FSM,
- int D,
- const std::vector<float> &TABLE,
int K,
int S0,
int SK,
+ int D,
+ const std::vector<float> &TABLE,
trellis_metric_type_t TYPE);
class @NAME@ : public gr_block
{
fsm d_FSM;
- int d_D;
- std::vector<float> d_TABLE;
int d_K;
int d_S0;
int d_SK;
+ int d_D;
+ std::vector<float> d_TABLE;
trellis_metric_type_t d_TYPE;
- std::vector<int> d_trace;
+ //std::vector<int> d_trace;
friend @SPTR_NAME@ trellis_make_@BASE_NAME@ (
const fsm &FSM,
- int D,
- const std::vector<float> &TABLE,
int K,
int S0,
int SK,
+ int D,
+ const std::vector<float> &TABLE,
trellis_metric_type_t TYPE);
@NAME@ (
const fsm &FSM,
- int D,
- const std::vector<float> &TABLE,
int K,
int S0,
int SK,
+ int D,
+ const std::vector<float> &TABLE,
trellis_metric_type_t TYPE);
public:
fsm FSM () const { return d_FSM; }
- int D () const { return d_D; }
- std::vector<float> TABLE () const { return d_TABLE; }
int K () const { return d_K; }
int S0 () const { return d_S0; }
int SK () const { return d_SK; }
+ int D () const { return d_D; }
+ std::vector<float> TABLE () const { return d_TABLE; }
trellis_metric_type_t TYPE () const { return d_TYPE; }
//std::vector<int> trace () const { return d_trace; }
void forecast (int noutput_items,
diff --git a/gr-trellis/src/lib/trellis_viterbi_combined_X.i.t b/gr-trellis/src/lib/trellis_viterbi_combined_X.i.t
index e4b68402c..d54aba4f1 100644
--- a/gr-trellis/src/lib/trellis_viterbi_combined_X.i.t
+++ b/gr-trellis/src/lib/trellis_viterbi_combined_X.i.t
@@ -26,11 +26,11 @@ GR_SWIG_BLOCK_MAGIC(trellis,@BASE_NAME@);
@SPTR_NAME@ trellis_make_@BASE_NAME@ (
const fsm &FSM,
- int D,
- const std::vector<float> &TABLE,
int K,
int S0,
int SK,
+ int D,
+ const std::vector<float> &TABLE,
trellis_metric_type_t TYPE);
@@ -39,20 +39,20 @@ class @NAME@ : public gr_block
private:
@NAME@ (
const fsm &FSM,
- int D,
- const std::vector<float> &TABLE,
int K,
int S0,
int SK,
+ int D,
+ const std::vector<float> &TABLE,
trellis_metric_type_t TYPE);
public:
fsm FSM () const { return d_FSM; }
- int D () const { return d_D; }
- std::vector<float> TABLE () const { return d_TABLE; }
int K () const { return d_K; }
int S0 () const { return d_S0; }
int SK () const { return d_SK; }
+ int D () const { return d_D; }
+ std::vector<float> TABLE () const { return d_TABLE; }
trellis_metric_type_t TYPE () const { return d_TYPE; }
//std::vector<short> trace () const { return d_trace; }
};
diff --git a/gr-trellis/src/lib/trellis_viterbi_combined_b.cc b/gr-trellis/src/lib/trellis_viterbi_combined_b.cc
index 2d245f58b..86501ac76 100644
--- a/gr-trellis/src/lib/trellis_viterbi_combined_b.cc
+++ b/gr-trellis/src/lib/trellis_viterbi_combined_b.cc
@@ -34,35 +34,35 @@ static const float INF = 1.0e9;
trellis_viterbi_combined_b_sptr
trellis_make_viterbi_combined_b (
const fsm &FSM,
- int D,
- const std::vector<float> &TABLE,
int K,
int S0,
int SK,
+ int D,
+ const std::vector<float> &TABLE,
trellis_metric_type_t TYPE)
{
- return trellis_viterbi_combined_b_sptr (new trellis_viterbi_combined_b (FSM,D,TABLE,K,S0,SK,TYPE));
+ return trellis_viterbi_combined_b_sptr (new trellis_viterbi_combined_b (FSM,K,S0,SK,D,TABLE,TYPE));
}
trellis_viterbi_combined_b::trellis_viterbi_combined_b (
const fsm &FSM,
- int D,
- const std::vector<float> &TABLE,
int K,
int S0,
int SK,
+ int D,
+ const std::vector<float> &TABLE,
trellis_metric_type_t TYPE)
: gr_block ("viterbi_combined_b",
gr_make_io_signature (1, -1, sizeof (float)),
gr_make_io_signature (1, -1, sizeof (unsigned char))),
d_FSM (FSM),
- d_D (D),
- d_TABLE (TABLE),
d_K (K),
d_S0 (S0),
d_SK (SK),
- d_TYPE (TYPE),
- d_trace(FSM.S()*K)
+ d_D (D),
+ d_TABLE (TABLE),
+ d_TYPE (TYPE)//,
+ //d_trace(FSM.S()*K)
{
set_relative_rate (1.0 / ((double) d_D));
set_output_multiple (d_K);
@@ -88,14 +88,15 @@ void viterbi_algorithm_combined(int I, int S, int O,
const std::vector<int> &OS,
const std::vector<int> &PS,
const std::vector<int> &PI,
- int D,
- const std::vector<float> &TABLE,
int K,
int S0,int SK,
+ int D,
+ const std::vector<float> &TABLE,
trellis_metric_type_t TYPE,
- const float *in, unsigned char *out,
- std::vector<int> &trace)
+ const float *in, unsigned char *out)//,
+ //std::vector<int> &trace)
{
+ std::vector<int> trace(S*K);
std::vector<float> alpha(S*2);
float *metric = new float[O];
int alphai;
@@ -173,7 +174,7 @@ trellis_viterbi_combined_b::general_work (int noutput_items,
const float *in = (const float *) input_items[m];
unsigned char *out = (unsigned char *) output_items[m];
for (int n=0;n<nblocks;n++) {
- viterbi_algorithm_combined(d_FSM.I(),d_FSM.S(),d_FSM.O(),d_FSM.NS(),d_FSM.OS(),d_FSM.PS(),d_FSM.PI(),d_D,d_TABLE,d_K,d_S0,d_SK,d_TYPE,&(in[n*d_K*d_D]),&(out[n*d_K]),d_trace);
+ viterbi_algorithm_combined(d_FSM.I(),d_FSM.S(),d_FSM.O(),d_FSM.NS(),d_FSM.OS(),d_FSM.PS(),d_FSM.PI(),d_K,d_S0,d_SK,d_D,d_TABLE,d_TYPE,&(in[n*d_K*d_D]),&(out[n*d_K]));//,d_trace);
}
}
diff --git a/gr-trellis/src/lib/trellis_viterbi_combined_b.h b/gr-trellis/src/lib/trellis_viterbi_combined_b.h
index 5de0924d7..87792a562 100644
--- a/gr-trellis/src/lib/trellis_viterbi_combined_b.h
+++ b/gr-trellis/src/lib/trellis_viterbi_combined_b.h
@@ -34,52 +34,52 @@ typedef boost::shared_ptr<trellis_viterbi_combined_b> trellis_viterbi_combined_b
trellis_viterbi_combined_b_sptr trellis_make_viterbi_combined_b (
const fsm &FSM,
- int D,
- const std::vector<float> &TABLE,
int K,
int S0,
int SK,
+ int D,
+ const std::vector<float> &TABLE,
trellis_metric_type_t TYPE);
class trellis_viterbi_combined_b : public gr_block
{
fsm d_FSM;
- int d_D;
- std::vector<float> d_TABLE;
int d_K;
int d_S0;
int d_SK;
+ int d_D;
+ std::vector<float> d_TABLE;
trellis_metric_type_t d_TYPE;
- std::vector<int> d_trace;
+ //std::vector<int> d_trace;
friend trellis_viterbi_combined_b_sptr trellis_make_viterbi_combined_b (
const fsm &FSM,
- int D,
- const std::vector<float> &TABLE,
int K,
int S0,
int SK,
+ int D,
+ const std::vector<float> &TABLE,
trellis_metric_type_t TYPE);
trellis_viterbi_combined_b (
const fsm &FSM,
- int D,
- const std::vector<float> &TABLE,
int K,
int S0,
int SK,
+ int D,
+ const std::vector<float> &TABLE,
trellis_metric_type_t TYPE);
public:
fsm FSM () const { return d_FSM; }
- int D () const { return d_D; }
- std::vector<float> TABLE () const { return d_TABLE; }
int K () const { return d_K; }
int S0 () const { return d_S0; }
int SK () const { return d_SK; }
+ int D () const { return d_D; }
+ std::vector<float> TABLE () const { return d_TABLE; }
trellis_metric_type_t TYPE () const { return d_TYPE; }
//std::vector<int> trace () const { return d_trace; }
void forecast (int noutput_items,
diff --git a/gr-trellis/src/lib/trellis_viterbi_combined_b.i b/gr-trellis/src/lib/trellis_viterbi_combined_b.i
index 069860893..ec58c62ba 100644
--- a/gr-trellis/src/lib/trellis_viterbi_combined_b.i
+++ b/gr-trellis/src/lib/trellis_viterbi_combined_b.i
@@ -26,11 +26,11 @@ GR_SWIG_BLOCK_MAGIC(trellis,viterbi_combined_b);
trellis_viterbi_combined_b_sptr trellis_make_viterbi_combined_b (
const fsm &FSM,
- int D,
- const std::vector<float> &TABLE,
int K,
int S0,
int SK,
+ int D,
+ const std::vector<float> &TABLE,
trellis_metric_type_t TYPE);
@@ -39,20 +39,20 @@ class trellis_viterbi_combined_b : public gr_block
private:
trellis_viterbi_combined_b (
const fsm &FSM,
- int D,
- const std::vector<float> &TABLE,
int K,
int S0,
int SK,
+ int D,
+ const std::vector<float> &TABLE,
trellis_metric_type_t TYPE);
public:
fsm FSM () const { return d_FSM; }
- int D () const { return d_D; }
- std::vector<float> TABLE () const { return d_TABLE; }
int K () const { return d_K; }
int S0 () const { return d_S0; }
int SK () const { return d_SK; }
+ int D () const { return d_D; }
+ std::vector<float> TABLE () const { return d_TABLE; }
trellis_metric_type_t TYPE () const { return d_TYPE; }
//std::vector<short> trace () const { return d_trace; }
};
diff --git a/gr-trellis/src/lib/trellis_viterbi_combined_i.cc b/gr-trellis/src/lib/trellis_viterbi_combined_i.cc
index 4506fd127..a92e7b35d 100644
--- a/gr-trellis/src/lib/trellis_viterbi_combined_i.cc
+++ b/gr-trellis/src/lib/trellis_viterbi_combined_i.cc
@@ -34,35 +34,35 @@ static const float INF = 1.0e9;
trellis_viterbi_combined_i_sptr
trellis_make_viterbi_combined_i (
const fsm &FSM,
- int D,
- const std::vector<float> &TABLE,
int K,
int S0,
int SK,
+ int D,
+ const std::vector<float> &TABLE,
trellis_metric_type_t TYPE)
{
- return trellis_viterbi_combined_i_sptr (new trellis_viterbi_combined_i (FSM,D,TABLE,K,S0,SK,TYPE));
+ return trellis_viterbi_combined_i_sptr (new trellis_viterbi_combined_i (FSM,K,S0,SK,D,TABLE,TYPE));
}
trellis_viterbi_combined_i::trellis_viterbi_combined_i (
const fsm &FSM,
- int D,
- const std::vector<float> &TABLE,
int K,
int S0,
int SK,
+ int D,
+ const std::vector<float> &TABLE,
trellis_metric_type_t TYPE)
: gr_block ("viterbi_combined_i",
gr_make_io_signature (1, -1, sizeof (float)),
gr_make_io_signature (1, -1, sizeof (int))),
d_FSM (FSM),
- d_D (D),
- d_TABLE (TABLE),
d_K (K),
d_S0 (S0),
d_SK (SK),
- d_TYPE (TYPE),
- d_trace(FSM.S()*K)
+ d_D (D),
+ d_TABLE (TABLE),
+ d_TYPE (TYPE)//,
+ //d_trace(FSM.S()*K)
{
set_relative_rate (1.0 / ((double) d_D));
set_output_multiple (d_K);
@@ -88,14 +88,15 @@ void viterbi_algorithm_combined(int I, int S, int O,
const std::vector<int> &OS,
const std::vector<int> &PS,
const std::vector<int> &PI,
- int D,
- const std::vector<float> &TABLE,
int K,
int S0,int SK,
+ int D,
+ const std::vector<float> &TABLE,
trellis_metric_type_t TYPE,
- const float *in, int *out,
- std::vector<int> &trace)
+ const float *in, int *out)//,
+ //std::vector<int> &trace)
{
+ std::vector<int> trace(S*K);
std::vector<float> alpha(S*2);
float *metric = new float[O];
int alphai;
@@ -173,7 +174,7 @@ trellis_viterbi_combined_i::general_work (int noutput_items,
const float *in = (const float *) input_items[m];
int *out = (int *) output_items[m];
for (int n=0;n<nblocks;n++) {
- viterbi_algorithm_combined(d_FSM.I(),d_FSM.S(),d_FSM.O(),d_FSM.NS(),d_FSM.OS(),d_FSM.PS(),d_FSM.PI(),d_D,d_TABLE,d_K,d_S0,d_SK,d_TYPE,&(in[n*d_K*d_D]),&(out[n*d_K]),d_trace);
+ viterbi_algorithm_combined(d_FSM.I(),d_FSM.S(),d_FSM.O(),d_FSM.NS(),d_FSM.OS(),d_FSM.PS(),d_FSM.PI(),d_K,d_S0,d_SK,d_D,d_TABLE,d_TYPE,&(in[n*d_K*d_D]),&(out[n*d_K]));//,d_trace);
}
}
diff --git a/gr-trellis/src/lib/trellis_viterbi_combined_i.h b/gr-trellis/src/lib/trellis_viterbi_combined_i.h
index 1ac5d7d1d..39287eb91 100644
--- a/gr-trellis/src/lib/trellis_viterbi_combined_i.h
+++ b/gr-trellis/src/lib/trellis_viterbi_combined_i.h
@@ -34,52 +34,52 @@ typedef boost::shared_ptr<trellis_viterbi_combined_i> trellis_viterbi_combined_i
trellis_viterbi_combined_i_sptr trellis_make_viterbi_combined_i (
const fsm &FSM,
- int D,
- const std::vector<float> &TABLE,
int K,
int S0,
int SK,
+ int D,
+ const std::vector<float> &TABLE,
trellis_metric_type_t TYPE);
class trellis_viterbi_combined_i : public gr_block
{
fsm d_FSM;
- int d_D;
- std::vector<float> d_TABLE;
int d_K;
int d_S0;
int d_SK;
+ int d_D;
+ std::vector<float> d_TABLE;
trellis_metric_type_t d_TYPE;
- std::vector<int> d_trace;
+ //std::vector<int> d_trace;
friend trellis_viterbi_combined_i_sptr trellis_make_viterbi_combined_i (
const fsm &FSM,
- int D,
- const std::vector<float> &TABLE,
int K,
int S0,
int SK,
+ int D,
+ const std::vector<float> &TABLE,
trellis_metric_type_t TYPE);
trellis_viterbi_combined_i (
const fsm &FSM,
- int D,
- const std::vector<float> &TABLE,
int K,
int S0,
int SK,
+ int D,
+ const std::vector<float> &TABLE,
trellis_metric_type_t TYPE);
public:
fsm FSM () const { return d_FSM; }
- int D () const { return d_D; }
- std::vector<float> TABLE () const { return d_TABLE; }
int K () const { return d_K; }
int S0 () const { return d_S0; }
int SK () const { return d_SK; }
+ int D () const { return d_D; }
+ std::vector<float> TABLE () const { return d_TABLE; }
trellis_metric_type_t TYPE () const { return d_TYPE; }
//std::vector<int> trace () const { return d_trace; }
void forecast (int noutput_items,
diff --git a/gr-trellis/src/lib/trellis_viterbi_combined_i.i b/gr-trellis/src/lib/trellis_viterbi_combined_i.i
index 05d68d580..47bea54e2 100644
--- a/gr-trellis/src/lib/trellis_viterbi_combined_i.i
+++ b/gr-trellis/src/lib/trellis_viterbi_combined_i.i
@@ -26,11 +26,11 @@ GR_SWIG_BLOCK_MAGIC(trellis,viterbi_combined_i);
trellis_viterbi_combined_i_sptr trellis_make_viterbi_combined_i (
const fsm &FSM,
- int D,
- const std::vector<float> &TABLE,
int K,
int S0,
int SK,
+ int D,
+ const std::vector<float> &TABLE,
trellis_metric_type_t TYPE);
@@ -39,20 +39,20 @@ class trellis_viterbi_combined_i : public gr_block
private:
trellis_viterbi_combined_i (
const fsm &FSM,
- int D,
- const std::vector<float> &TABLE,
int K,
int S0,
int SK,
+ int D,
+ const std::vector<float> &TABLE,
trellis_metric_type_t TYPE);
public:
fsm FSM () const { return d_FSM; }
- int D () const { return d_D; }
- std::vector<float> TABLE () const { return d_TABLE; }
int K () const { return d_K; }
int S0 () const { return d_S0; }
int SK () const { return d_SK; }
+ int D () const { return d_D; }
+ std::vector<float> TABLE () const { return d_TABLE; }
trellis_metric_type_t TYPE () const { return d_TYPE; }
//std::vector<short> trace () const { return d_trace; }
};
diff --git a/gr-trellis/src/lib/trellis_viterbi_combined_s.cc b/gr-trellis/src/lib/trellis_viterbi_combined_s.cc
index f103db229..b664f6e95 100644
--- a/gr-trellis/src/lib/trellis_viterbi_combined_s.cc
+++ b/gr-trellis/src/lib/trellis_viterbi_combined_s.cc
@@ -34,35 +34,35 @@ static const float INF = 1.0e9;
trellis_viterbi_combined_s_sptr
trellis_make_viterbi_combined_s (
const fsm &FSM,
- int D,
- const std::vector<float> &TABLE,
int K,
int S0,
int SK,
+ int D,
+ const std::vector<float> &TABLE,
trellis_metric_type_t TYPE)
{
- return trellis_viterbi_combined_s_sptr (new trellis_viterbi_combined_s (FSM,D,TABLE,K,S0,SK,TYPE));
+ return trellis_viterbi_combined_s_sptr (new trellis_viterbi_combined_s (FSM,K,S0,SK,D,TABLE,TYPE));
}
trellis_viterbi_combined_s::trellis_viterbi_combined_s (
const fsm &FSM,
- int D,
- const std::vector<float> &TABLE,
int K,
int S0,
int SK,
+ int D,
+ const std::vector<float> &TABLE,
trellis_metric_type_t TYPE)
: gr_block ("viterbi_combined_s",
gr_make_io_signature (1, -1, sizeof (float)),
gr_make_io_signature (1, -1, sizeof (short))),
d_FSM (FSM),
- d_D (D),
- d_TABLE (TABLE),
d_K (K),
d_S0 (S0),
d_SK (SK),
- d_TYPE (TYPE),
- d_trace(FSM.S()*K)
+ d_D (D),
+ d_TABLE (TABLE),
+ d_TYPE (TYPE)//,
+ //d_trace(FSM.S()*K)
{
set_relative_rate (1.0 / ((double) d_D));
set_output_multiple (d_K);
@@ -88,14 +88,15 @@ void viterbi_algorithm_combined(int I, int S, int O,
const std::vector<int> &OS,
const std::vector<int> &PS,
const std::vector<int> &PI,
- int D,
- const std::vector<float> &TABLE,
int K,
int S0,int SK,
+ int D,
+ const std::vector<float> &TABLE,
trellis_metric_type_t TYPE,
- const float *in, short *out,
- std::vector<int> &trace)
+ const float *in, short *out)//,
+ //std::vector<int> &trace)
{
+ std::vector<int> trace(S*K);
std::vector<float> alpha(S*2);
float *metric = new float[O];
int alphai;
@@ -173,7 +174,7 @@ trellis_viterbi_combined_s::general_work (int noutput_items,
const float *in = (const float *) input_items[m];
short *out = (short *) output_items[m];
for (int n=0;n<nblocks;n++) {
- viterbi_algorithm_combined(d_FSM.I(),d_FSM.S(),d_FSM.O(),d_FSM.NS(),d_FSM.OS(),d_FSM.PS(),d_FSM.PI(),d_D,d_TABLE,d_K,d_S0,d_SK,d_TYPE,&(in[n*d_K*d_D]),&(out[n*d_K]),d_trace);
+ viterbi_algorithm_combined(d_FSM.I(),d_FSM.S(),d_FSM.O(),d_FSM.NS(),d_FSM.OS(),d_FSM.PS(),d_FSM.PI(),d_K,d_S0,d_SK,d_D,d_TABLE,d_TYPE,&(in[n*d_K*d_D]),&(out[n*d_K]));//,d_trace);
}
}
diff --git a/gr-trellis/src/lib/trellis_viterbi_combined_s.h b/gr-trellis/src/lib/trellis_viterbi_combined_s.h
index c174c5f01..f4448e40c 100644
--- a/gr-trellis/src/lib/trellis_viterbi_combined_s.h
+++ b/gr-trellis/src/lib/trellis_viterbi_combined_s.h
@@ -34,52 +34,52 @@ typedef boost::shared_ptr<trellis_viterbi_combined_s> trellis_viterbi_combined_s
trellis_viterbi_combined_s_sptr trellis_make_viterbi_combined_s (
const fsm &FSM,
- int D,
- const std::vector<float> &TABLE,
int K,
int S0,
int SK,
+ int D,
+ const std::vector<float> &TABLE,
trellis_metric_type_t TYPE);
class trellis_viterbi_combined_s : public gr_block
{
fsm d_FSM;
- int d_D;
- std::vector<float> d_TABLE;
int d_K;
int d_S0;
int d_SK;
+ int d_D;
+ std::vector<float> d_TABLE;
trellis_metric_type_t d_TYPE;
- std::vector<int> d_trace;
+ //std::vector<int> d_trace;
friend trellis_viterbi_combined_s_sptr trellis_make_viterbi_combined_s (
const fsm &FSM,
- int D,
- const std::vector<float> &TABLE,
int K,
int S0,
int SK,
+ int D,
+ const std::vector<float> &TABLE,
trellis_metric_type_t TYPE);
trellis_viterbi_combined_s (
const fsm &FSM,
- int D,
- const std::vector<float> &TABLE,
int K,
int S0,
int SK,
+ int D,
+ const std::vector<float> &TABLE,
trellis_metric_type_t TYPE);
public:
fsm FSM () const { return d_FSM; }
- int D () const { return d_D; }
- std::vector<float> TABLE () const { return d_TABLE; }
int K () const { return d_K; }
int S0 () const { return d_S0; }
int SK () const { return d_SK; }
+ int D () const { return d_D; }
+ std::vector<float> TABLE () const { return d_TABLE; }
trellis_metric_type_t TYPE () const { return d_TYPE; }
//std::vector<int> trace () const { return d_trace; }
void forecast (int noutput_items,
diff --git a/gr-trellis/src/lib/trellis_viterbi_combined_s.i b/gr-trellis/src/lib/trellis_viterbi_combined_s.i
index c1d5693a2..e6c8d2ff8 100644
--- a/gr-trellis/src/lib/trellis_viterbi_combined_s.i
+++ b/gr-trellis/src/lib/trellis_viterbi_combined_s.i
@@ -26,11 +26,11 @@ GR_SWIG_BLOCK_MAGIC(trellis,viterbi_combined_s);
trellis_viterbi_combined_s_sptr trellis_make_viterbi_combined_s (
const fsm &FSM,
- int D,
- const std::vector<float> &TABLE,
int K,
int S0,
int SK,
+ int D,
+ const std::vector<float> &TABLE,
trellis_metric_type_t TYPE);
@@ -39,20 +39,20 @@ class trellis_viterbi_combined_s : public gr_block
private:
trellis_viterbi_combined_s (
const fsm &FSM,
- int D,
- const std::vector<float> &TABLE,
int K,
int S0,
int SK,
+ int D,
+ const std::vector<float> &TABLE,
trellis_metric_type_t TYPE);
public:
fsm FSM () const { return d_FSM; }
- int D () const { return d_D; }
- std::vector<float> TABLE () const { return d_TABLE; }
int K () const { return d_K; }
int S0 () const { return d_S0; }
int SK () const { return d_SK; }
+ int D () const { return d_D; }
+ std::vector<float> TABLE () const { return d_TABLE; }
trellis_metric_type_t TYPE () const { return d_TYPE; }
//std::vector<short> trace () const { return d_trace; }
};
diff --git a/gr-trellis/src/lib/trellis_viterbi_i.cc b/gr-trellis/src/lib/trellis_viterbi_i.cc
index 2ff304ebb..8119f816b 100644
--- a/gr-trellis/src/lib/trellis_viterbi_i.cc
+++ b/gr-trellis/src/lib/trellis_viterbi_i.cc
@@ -52,8 +52,8 @@ trellis_viterbi_i::trellis_viterbi_i (
d_FSM (FSM),
d_K (K),
d_S0 (S0),
- d_SK (SK),
- d_trace(FSM.S()*K)
+ d_SK (SK)//,
+ //d_trace(FSM.S()*K)
{
set_relative_rate (1.0 / ((double) d_FSM.O()));
set_output_multiple (d_K);
@@ -81,9 +81,10 @@ void viterbi_algorithm(int I, int S, int O,
const std::vector<int> &PI,
int K,
int S0,int SK,
- const float *in, int *out,
- std::vector<int> &trace)
+ const float *in, int *out)//,
+ //std::vector<int> &trace)
{
+ std::vector<int> trace(S*K);
std::vector<float> alpha(S*2);
int alphai;
float norm,mm,minm;
@@ -158,7 +159,7 @@ trellis_viterbi_i::general_work (int noutput_items,
const float *in = (const float *) input_items[m];
int *out = (int *) output_items[m];
for (int n=0;n<nblocks;n++) {
- viterbi_algorithm(d_FSM.I(),d_FSM.S(),d_FSM.O(),d_FSM.NS(),d_FSM.OS(),d_FSM.PS(),d_FSM.PI(),d_K,d_S0,d_SK,&(in[n*d_K*d_FSM.O()]),&(out[n*d_K]),d_trace);
+ viterbi_algorithm(d_FSM.I(),d_FSM.S(),d_FSM.O(),d_FSM.NS(),d_FSM.OS(),d_FSM.PS(),d_FSM.PI(),d_K,d_S0,d_SK,&(in[n*d_K*d_FSM.O()]),&(out[n*d_K]));//,d_trace);
}
}
diff --git a/gr-trellis/src/lib/trellis_viterbi_i.h b/gr-trellis/src/lib/trellis_viterbi_i.h
index 86ac89876..2379a8590 100644
--- a/gr-trellis/src/lib/trellis_viterbi_i.h
+++ b/gr-trellis/src/lib/trellis_viterbi_i.h
@@ -45,7 +45,7 @@ class trellis_viterbi_i : public gr_block
int d_K;
int d_S0;
int d_SK;
- std::vector<int> d_trace;
+ //std::vector<int> d_trace;
friend trellis_viterbi_i_sptr trellis_make_viterbi_i (
const fsm &FSM,
diff --git a/gr-trellis/src/lib/trellis_viterbi_s.cc b/gr-trellis/src/lib/trellis_viterbi_s.cc
index bb3dafa61..be8fd37b0 100644
--- a/gr-trellis/src/lib/trellis_viterbi_s.cc
+++ b/gr-trellis/src/lib/trellis_viterbi_s.cc
@@ -52,8 +52,8 @@ trellis_viterbi_s::trellis_viterbi_s (
d_FSM (FSM),
d_K (K),
d_S0 (S0),
- d_SK (SK),
- d_trace(FSM.S()*K)
+ d_SK (SK)//,
+ //d_trace(FSM.S()*K)
{
set_relative_rate (1.0 / ((double) d_FSM.O()));
set_output_multiple (d_K);
@@ -81,9 +81,10 @@ void viterbi_algorithm(int I, int S, int O,
const std::vector<int> &PI,
int K,
int S0,int SK,
- const float *in, short *out,
- std::vector<int> &trace)
+ const float *in, short *out)//,
+ //std::vector<int> &trace)
{
+ std::vector<int> trace(S*K);
std::vector<float> alpha(S*2);
int alphai;
float norm,mm,minm;
@@ -158,7 +159,7 @@ trellis_viterbi_s::general_work (int noutput_items,
const float *in = (const float *) input_items[m];
short *out = (short *) output_items[m];
for (int n=0;n<nblocks;n++) {
- viterbi_algorithm(d_FSM.I(),d_FSM.S(),d_FSM.O(),d_FSM.NS(),d_FSM.OS(),d_FSM.PS(),d_FSM.PI(),d_K,d_S0,d_SK,&(in[n*d_K*d_FSM.O()]),&(out[n*d_K]),d_trace);
+ viterbi_algorithm(d_FSM.I(),d_FSM.S(),d_FSM.O(),d_FSM.NS(),d_FSM.OS(),d_FSM.PS(),d_FSM.PI(),d_K,d_S0,d_SK,&(in[n*d_K*d_FSM.O()]),&(out[n*d_K]));//,d_trace);
}
}
diff --git a/gr-trellis/src/lib/trellis_viterbi_s.h b/gr-trellis/src/lib/trellis_viterbi_s.h
index 6232ce5bf..e4cee1cd9 100644
--- a/gr-trellis/src/lib/trellis_viterbi_s.h
+++ b/gr-trellis/src/lib/trellis_viterbi_s.h
@@ -45,7 +45,7 @@ class trellis_viterbi_s : public gr_block
int d_K;
int d_S0;
int d_SK;
- std::vector<int> d_trace;
+ //std::vector<int> d_trace;
friend trellis_viterbi_s_sptr trellis_make_viterbi_s (
const fsm &FSM,