summaryrefslogtreecommitdiff
path: root/gr-fec/python/fec/polar/helper_functions.py
diff options
context:
space:
mode:
Diffstat (limited to 'gr-fec/python/fec/polar/helper_functions.py')
-rw-r--r--gr-fec/python/fec/polar/helper_functions.py77
1 files changed, 63 insertions, 14 deletions
diff --git a/gr-fec/python/fec/polar/helper_functions.py b/gr-fec/python/fec/polar/helper_functions.py
index e93fa9a507..72501beae3 100644
--- a/gr-fec/python/fec/polar/helper_functions.py
+++ b/gr-fec/python/fec/polar/helper_functions.py
@@ -20,6 +20,7 @@
import numpy as np
import time, sys
+import copy
def power_of_2_int(num):
@@ -119,24 +120,72 @@ def main():
for i in range(8):
print(i, 'is power of 2: ', is_power_of_two(i))
- n = 2 ** 6
- k = n // 2
+ n = 6
+ m = 2 ** n
+ k = m // 2
eta = 0.3
- # frozen_bit_positions = get_frozen_bit_positions('.', 256, 128, 0.11)
- # print(frozen_bit_positions)
+ pos = np.arange(m)
+ rev_pos = bit_reverse_vector(pos, n)
+ print(pos)
+ print(rev_pos)
+
+ bound = 16
+ num_lanes = m // bound
+
+
+ lanes = np.zeros((num_lanes, bound), dtype=int)
+ for i in range(0, num_lanes):
+ p = i * bound
+ part = rev_pos[p: p + bound]
+ lanes[i] = part
+
+ print('reved lanes')
+ print(lanes)
+
+ # SHUFFLE!
+ shuffle_pos = bit_reverse_vector(np.arange(bound), 4)
+ for i in range(num_lanes):
+ lane = lanes[i]
+ lanes[i] = lanes[i, shuffle_pos]
+ print('\nshuffled lanes')
+ print(lanes)
+
+ # SORT HALVES
+ hb = bound // 2
+ for i in range(num_lanes // 2):
+ l0 = lanes[i]
+ l1 = lanes[i + (num_lanes // 2)]
+ l0p = copy.deepcopy(l0[hb:])
+ l0[hb:] = l1[0:hb]
+ l1[0:hb] = l0p
+ lanes[i] =l0
+ lanes[i + (num_lanes // 2)] = l1
+ print('\nsort halves')
+ print(lanes)
+
+ # 'MELT' SHUFFLE INTERLEAVE!
+ melt_pos = np.arange(bound, dtype=int)
+ melt_pos = np.reshape(melt_pos, (2, -1)).T.flatten()
+ for i in range(num_lanes):
+ lanes[i] = lanes[i, melt_pos]
+ print('\nmelt lanes')
+ print(lanes)
+
+
+
+ for i in range(0, m, bound):
+ print("\nlook at this part")
+ part = pos[i: i + bound]
+ rev = bit_reverse_vector(part, n)
+ sorted_rev = np.sort(rev)
+ print(part)
+ print(rev)
+ print(sorted_rev)
+ sorted_part = rev[shuffle_pos]
+ print(sorted_part)
- print(np.arange(16))
- print bit_reverse_vector(np.arange(16), 4)
- ntotal = 99
- for i in range(ntotal):
- show_progress_bar(i, ntotal)
- time.sleep(0.1)
-
- # sys.stdout.write('Hello')
- # time.sleep(1)
- # sys.stdout.write('\rMomy ')
if __name__ == '__main__':
main()