예제 #1
0
    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)
예제 #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)
예제 #3
0
    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)
예제 #4
0
 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)
예제 #5
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")