From 7fea5a1532e2c9d65406745fa7a18cf5ea3395ad Mon Sep 17 00:00:00 2001 From: Ben Reynwar Date: Sun, 13 Feb 2011 19:43:19 -0700 Subject: Fixing bugs in qam.py. --- gnuradio-core/src/python/gnuradio/blks2impl/qam.py | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) diff --git a/gnuradio-core/src/python/gnuradio/blks2impl/qam.py b/gnuradio-core/src/python/gnuradio/blks2impl/qam.py index 143f6e108..bdd27e9bb 100644 --- a/gnuradio-core/src/python/gnuradio/blks2impl/qam.py +++ b/gnuradio-core/src/python/gnuradio/blks2impl/qam.py @@ -113,7 +113,7 @@ def make_differential_constellation(m, gray_coded): return const_map def make_not_differential_constellation(m, gray_coded): - side = pow(m, 0.5) + side = int(pow(m, 0.5)) if (not isinstance(m, int) or m < 4 or not is_power_of_four(m)): raise ValueError("m must be a power of 4 integer.") # Each symbol holds k bits. @@ -122,22 +122,20 @@ def make_not_differential_constellation(m, gray_coded): # Number rows and columns using gray codes. gcs = gray_code(side) # Get inverse gray codes. - i_gcs = dict([(v, key) for key, v in enumerate(gcs)]) + i_gcs = mod_codes.invert_code(gcs) else: - i_gcs = dict([(i, i) for i in range(0, m)]) + i_gcs = range(0, side) # The distance between points is found. - step = 2/(side-1) + step = 2.0/(side-1) gc_to_x = [-1 + i_gcs[gc]*step for gc in range(0, side)] - # First k/2 bits determine x position. # Following k/2 bits determine y position. const_map = [] for i in range(m): - y = gc_to_x(get_bits(i, 0, k/2)) - x = gc_to_x(get_bits(i, k/2, k/2)) + y = gc_to_x[get_bits(i, 0, k/2)] + x = gc_to_x[get_bits(i, k/2, k/2)] const_map.append(complex(x,y)) - return const_map # ///////////////////////////////////////////////////////////////////////////// @@ -165,7 +163,7 @@ def qam_constellation(constellation_points=_def_constellation_points, # No pre-diff code # Should add one so that we can gray-code the quadrant bits too. pre_diff_code = [] - constellation = gr.constellation_rect(points, pre_diff_code, side, side, width, width) + constellation = gr.constellation_rect(points, pre_diff_code, 4, side, side, width, width) return constellation # ///////////////////////////////////////////////////////////////////////////// -- cgit