Example #1
0
    def test_M2(self):
        np.set_printoptions(linewidth=np.inf)
        for L in [2, 4, 8]:
            testUnitaryCode(2, ADSMCode(2, "PSK", L))

        mind = getMinimumEuclideanDistance(ADSMCode(2, "PSK", 2).codes)
        self.assertAlmostEqual(mind, 4.0)
        mind = getMinimumEuclideanDistance(ADSMCode(2, "PSK", 2, 2.0 * np.pi / 4.0).codes)
        self.assertAlmostEqual(mind, 2.0)
Example #2
0
    def test_M4(self):
        c = TASTCode(4, 1, 2)
        self.assertGreater(getMinimumEuclideanDistance(c.codes), 0.0)
        testUnitaryCode(4, c)

        c = TASTCode(4, 2, 2)
        self.assertGreater(getMinimumEuclideanDistance(c.codes), 0.0)
        testUnitaryCode(4, c)

        c = TASTCode(4, 2, 4)
        self.assertGreater(getMinimumEuclideanDistance(c.codes), 0.0)
        testUnitaryCode(4, c)
Example #3
0
    def test_QAM(self):
        for L in 2**np.arange(2, 8, 2):
            mod = Modulator("QAM", L)
            meanNorm = np.mean(np.square(np.abs(mod.symbols)))
            self.assertAlmostEqual(meanNorm,
                                   1.0,
                                   msg="The mean power of QAM(" + str(L) +
                                   ") symbols differs from 1.0")

            med = getMinimumEuclideanDistance(mod.symbols.reshape(L, 1, 1))
            self.assertGreater(med,
                               0,
                               msg="The minimum Euclidean distance of QAM(" +
                               str(L) + ") symbols is too small")