IT++ Logo
channel_code.h
Go to the documentation of this file.
1 
29 #ifndef CHANNEL_CODE_H
30 #define CHANNEL_CODE_H
31 
32 #include <itpp/base/vec.h>
33 #include <itpp/comm/modulator.h>
34 #include <itpp/itexports.h>
35 
36 namespace itpp
37 {
38 
43 //---------------------- BCH --------------------------------------
44 
50 class ITPP_EXPORT Channel_Code
51 {
52 public:
56  virtual ~Channel_Code() {}
57 
59  virtual void encode(const bvec &uncoded_bits, bvec &coded_bits) = 0;
61  virtual bvec encode(const bvec &uncoded_bits) = 0;
62 
64  virtual void decode(const bvec &codedbits, bvec &decoded_bits) = 0;
66  //virtual bvec decode(const bvec &coded_bits);
67  virtual bvec decode(const bvec &coded_bits) = 0;
68 
70  virtual void decode(const vec &received_signal, bvec &decoded_bits) = 0;
72  //virtual bvec decode(const vec &received_signal);
73  virtual bvec decode(const vec &received_signal) = 0;
74 
76  virtual double get_rate() const = 0;
77 };
78 
79 
86 class ITPP_EXPORT Dummy_Code : public Channel_Code
87 {
88 public:
92  virtual ~Dummy_Code() {}
93 
95  virtual void encode(const bvec &uncoded_bits, bvec &coded_bits) { coded_bits = uncoded_bits; }
97  virtual bvec encode(const bvec &uncoded_bits) { return uncoded_bits; }
98 
100  virtual void decode(const bvec &coded_bits, bvec &decoded_bits) { decoded_bits = coded_bits; }
102  virtual bvec decode(const bvec &coded_bits) { return coded_bits; }
103 
105  virtual void decode(const vec &received_signal, bvec &decoded_bits) { BPSK bpsk; bpsk.demodulate_bits(received_signal, decoded_bits); }
107  virtual bvec decode(const vec &received_signal) { bvec out; decode(received_signal, out); return out; }
108 
110  virtual double get_rate() const { return 1.0; }
111 };
112 
113 
114 
115 } // namespace itpp
116 
117 #endif // #ifndef CHANNEL_CODE_H
modulator.h
One- and two-dimensional modulators - header file.
itpp::Channel_Code::Channel_Code
Channel_Code()
Default constructor.
Definition: channel_code.h:54
itpp::Channel_Code::decode
virtual void decode(const bvec &codedbits, bvec &decoded_bits)=0
Decode a bvec of coded data.
itpp::Channel_Code::decode
virtual bvec decode(const vec &received_signal)=0
Decode a vec of received data.
itpp::Dummy_Code::decode
virtual void decode(const vec &received_signal, bvec &decoded_bits)
Decode a vec of received data. Assumes soft input (BPSK modulated)
Definition: channel_code.h:105
itpp::Channel_Code::decode
virtual bvec decode(const bvec &coded_bits)=0
Decode a bvec of coded data.
itpp::Channel_Code::~Channel_Code
virtual ~Channel_Code()
Destructor.
Definition: channel_code.h:56
itpp::BPSK
BPSK modulator with real symbols.
Definition: modulator.h:877
itpp::BPSK::demodulate_bits
void demodulate_bits(const vec &signal, bvec &output) const
Demodulate noisy BPSK symbols in complex domain into bits.
Definition: modulator.cpp:326
itpp
itpp namespace
Definition: itmex.h:37
itpp::Channel_Code::decode
virtual void decode(const vec &received_signal, bvec &decoded_bits)=0
Decode a vec of received data.
itpp::Dummy_Code::decode
virtual bvec decode(const vec &received_signal)
Decode a vec of received data. Assumes soft input (BPSK modulated)
Definition: channel_code.h:107
itpp::Dummy_Code
Dummy Channel Code class.
Definition: channel_code.h:87
itpp::Channel_Code::get_rate
virtual double get_rate() const =0
Get the code rate.
itpp::Dummy_Code::~Dummy_Code
virtual ~Dummy_Code()
Destructor.
Definition: channel_code.h:92
itpp::Channel_Code::encode
virtual bvec encode(const bvec &uncoded_bits)=0
Encode a bvec of input.
itpp::Dummy_Code::decode
virtual void decode(const bvec &coded_bits, bvec &decoded_bits)
Decode a bvec of coded data.
Definition: channel_code.h:100
itpp::Dummy_Code::encode
virtual void encode(const bvec &uncoded_bits, bvec &coded_bits)
Encode a bvec of input.
Definition: channel_code.h:95
itpp::Dummy_Code::get_rate
virtual double get_rate() const
Get the code rate.
Definition: channel_code.h:110
itpp::Dummy_Code::decode
virtual bvec decode(const bvec &coded_bits)
Decode a bvec of coded data.
Definition: channel_code.h:102
itpp::Channel_Code
Generic Channel Code class.
Definition: channel_code.h:51
vec.h
Templated Vector Class Definitions.
itpp::Dummy_Code::Dummy_Code
Dummy_Code()
Default constructor.
Definition: channel_code.h:90
itpp::Dummy_Code::encode
virtual bvec encode(const bvec &uncoded_bits)
Encode a bvec of input.
Definition: channel_code.h:97
itpp::Channel_Code::encode
virtual void encode(const bvec &uncoded_bits, bvec &coded_bits)=0
Encode a bvec of input.

Generated on Sun Jan 3 2021 11:31:33 for IT++ by Doxygen 1.8.20