def test_M2(self): for L in [2, 4, 8]: self.assertEqual(isUnitary(generateADSMCodes(2, "PSK", L)), True) mind = getMinimumEuclideanDistance(generateADSMCodes(2, "PSK", 2)) self.assertAlmostEqual(mind, 4.0) mind = getMinimumEuclideanDistance(generateADSMCodes(2, "PSK", 2, 2.0 * np.pi / 4.0)) self.assertAlmostEqual(mind, 2.0)
def test_M4(self): codes = generateTASTCodes(4, 1, 2) self.assertGreater(getMinimumEuclideanDistance(codes), 0.0) self.assertEqual(isUnitary(codes), True) codes = generateTASTCodes(4, 2, 2) self.assertGreater(getMinimumEuclideanDistance(codes), 0.0) self.assertEqual(isUnitary(codes), True) codes = generateTASTCodes(4, 2, 4) self.assertGreater(getMinimumEuclideanDistance(codes), 0.0) self.assertEqual(isUnitary(codes), True)
def test_getMinimumEuclideanDistance(self): codes = mod.generatePSKSymbols(4).reshape(4, 1, 1) med = me.getMinimumEuclideanDistance(np.array(codes)) self.assertAlmostEqual(med, 2.0) codes = mod.generateStarQAMSymbols(16).reshape(16, 1, 1) med = me.getMinimumEuclideanDistance(np.array(codes)) self.assertAlmostEqual(med, 0.2343145750507619) codes = im.generateIMCodes("opt", 4, 2, 4, "PSK", 4, 1) med = me.getMinimumEuclideanDistance(np.array(codes)) self.assertAlmostEqual(med, 1.0) codes = im.generateIMCodes("opt", 8, 4, 64, "PSK", 2, 1) med = me.getMinimumEuclideanDistance(np.array(codes)) self.assertAlmostEqual(med, 0.5)
def test_M2(self): codes = generateIMCodes("opt", 2, 1, 2, "PSK", 1, 1) np.testing.assert_almost_equal(codes, np.array([[[1.], [0.]], [[0.], [1.]]])) codes = generateIMCodes("dic", 4, 1, 4, "PSK", 1, 1) np.testing.assert_almost_equal( codes, np.array([[[1.], [0.], [0.], [0.]], [[0.], [1.], [0.], [0.]], [[0.], [0.], [1.], [0.]], [[0.], [0.], [0.], [1.]]])) codes = generateIMCodes("wen", 4, 2, 4, "PSK", 1, 1) np.testing.assert_almost_equal( codes, np.array([[[0.70710678], [0.70710678], [0.], [0.]], [[0.], [0.70710678], [0.70710678], [0.]], [[0.], [0.], [0.70710678], [0.70710678]], [[0.70710678], [0.], [0.], [0.70710678]]])) codes = generateIMCodes("dic", 8, 4, 8, "PSK", 2, 1) self.assertAlmostEqual(getMinimumEuclideanDistance(codes), 0.5) codes = generateIMCodes("opt", 8, 4, 8, "PSK", 2, 1) self.assertAlmostEqual(getMinimumEuclideanDistance(codes), 1.0)
def test_QAM(self): for L in 2**np.arange(2, 8, 2): symbols = generateQAMSymbols(L) meanNorm = np.mean(np.square(np.abs(symbols))) self.assertAlmostEqual(meanNorm, 1.0, msg="The mean power of QAM(" + str(L) + ") symbols differs from 1.0") med = getMinimumEuclideanDistance(symbols.reshape(L, 1, 1)) self.assertGreater(med, 0, msg="The minimum Euclidean distance of QAM(" + str(L) + ") symbols is too small")