diff options
author | Johnathan Corgan <johnathan@corganlabs.com> | 2015-12-07 16:15:31 -0800 |
---|---|---|
committer | Johnathan Corgan <johnathan@corganlabs.com> | 2015-12-07 16:15:31 -0800 |
commit | 422271f1e025bd1835e4a7ee68e2a60e23167b45 (patch) | |
tree | f49812df4a01de3d40af40e80ee9b6d62db6064c /gr-fec/python/fec/polar/common.py | |
parent | a96c1dd97ecb6ca9a40522d297df27bbdeca5d7f (diff) | |
parent | 9ac7203fffb37fd456b82b737a71d4c7a1607b06 (diff) |
Merge remote-tracking branch 'jdemel/polar-systematic'
Diffstat (limited to 'gr-fec/python/fec/polar/common.py')
-rw-r--r-- | gr-fec/python/fec/polar/common.py | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/gr-fec/python/fec/polar/common.py b/gr-fec/python/fec/polar/common.py index b4b152de61..fa5987b6d2 100644 --- a/gr-fec/python/fec/polar/common.py +++ b/gr-fec/python/fec/polar/common.py @@ -65,5 +65,20 @@ class PolarCommon: def _vector_bit_reversed(self, vec, n): return bit_reverse_vector(vec, n) + def _encode_efficient(self, vec): + n_stages = self.power + pos = np.arange(self.N, dtype=int) + for i in range(n_stages): + splitted = np.reshape(pos, (2 ** (i + 1), -1)) + upper_branch = splitted[0::2].flatten() + lower_branch = splitted[1::2].flatten() + vec[upper_branch] = (vec[upper_branch] + vec[lower_branch]) % 2 + return vec + + def _encode_natural_order(self, vec): + # use this function. It reflects the encoding process implemented in VOLK. + vec = vec[self.bit_reverse_positions] + return self._encode_efficient(vec) + def info_print(self): print "POLAR code ({0}, {1})".format(self.N, self.K) |