def test_seq_array(self): # calcBaseZC, getShiftedZF, get_extended_ZF expected_user_seq_no_ext1 = getShiftedZF(calcBaseZC(139, 25), 3) np.testing.assert_array_almost_equal(expected_user_seq_no_ext1, self.user_seq_no_ext1.seq_array()) expected_user_seq_no_ext2 = getShiftedZF(calcBaseZC(31, 6), 1) np.testing.assert_array_almost_equal(expected_user_seq_no_ext2, self.user_seq_no_ext2.seq_array()) expected_user_seq_no_ext2_other_shift = getShiftedZF(calcBaseZC(31, 6), 3) np.testing.assert_array_almost_equal( expected_user_seq_no_ext2_other_shift, self.user_seq_no_ext2_other.seq_array()) expected_user_seq1 = getShiftedZF(get_extended_ZF(calcBaseZC(139, 25), 150), 7) np.testing.assert_array_almost_equal(self.user_seq1.seq_array(), expected_user_seq1) expected_user_seq2 = getShiftedZF(get_extended_ZF(calcBaseZC(139, 12), 150), 4) np.testing.assert_array_almost_equal(self.user_seq2.seq_array(), expected_user_seq2) expected_user_seq3 = getShiftedZF(get_extended_ZF(calcBaseZC(31, 25), 64), 1) np.testing.assert_array_almost_equal(self.user_seq3.seq_array(), expected_user_seq3) expected_user_seq4 = getShiftedZF(get_extended_ZF(calcBaseZC(31, 6), 64), 2) np.testing.assert_array_almost_equal(self.user_seq4.seq_array(), expected_user_seq4) expected_user_seq5 = getShiftedZF(get_extended_ZF(calcBaseZC(31, 6), 32), 3) np.testing.assert_array_almost_equal(self.user_seq5.seq_array(), expected_user_seq5) expected_user_seq6 = getShiftedZF(get_extended_ZF(calcBaseZC(31, 6), 256), 5) np.testing.assert_array_almost_equal(self.user_seq6.seq_array(), expected_user_seq6)
# xxxxxxxxxxxxxxx Generate the root sequence xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx # xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx a_u1 = get_extended_ZF(calcBaseZC(Nzc, u1), Nsc / 2) a_u2 = get_extended_ZF(calcBaseZC(Nzc, u2), Nsc / 2) a_u3 = get_extended_ZF(calcBaseZC(Nzc, u3), Nsc / 2) print("Nsc: {0}".format(Nsc)) print("a_u.shape: {0}".format(a_u1.shape)) # xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx # xxxxxxxxxxxxxxx Create shifted sequences for 3 users xxxxxxxxxxxxxxxxxxxx # xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx # We arbitrarely choose some cyclic shift index and then we call # zadoffchu.getShiftedZF to get the shifted sequence. shift_index = 4 r1 = getShiftedZF(a_u1, shift_index) r2 = getShiftedZF(a_u2, shift_index) r3 = getShiftedZF(a_u3, shift_index) # xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx # xxxxxxxxxxxxxxx Generate channels from users to the BS xxxxxxxxxxxxxx # xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx jakes_all_links = np.empty([3, 3], dtype=object) tdlchannels_all_links = np.empty([3, 3], dtype=object) impulse_responses = np.empty([3, 3], dtype=object) # Dimension: `UEs x ANs x num_subcarriers x numUeAnt x numAnAnt` freq_responses = np.empty([3, 3, Nsc, numUeAnt, numAnAnt], dtype=complex) for ueIdx in range(3): for anIdx in range(3): jakes_all_links[ueIdx, anIdx] = JakesSampleGenerator(