Example #1
0
    def realTest(self):
        name = "orchestra"
        pySig = py_pursuit_Signal.InitFromFile("../../../data/" + name + ".wav", forceMono=True, doNormalize=True)
        pySig.crop(0, 5 * pySig.samplingFrequency)
        pySig.pad(16384)
        sigEnergy = np.sum(pySig.dataVec ** 2)
        dico = [128, 1024, 8192]
        nbAtoms = 200

        classicDIco = py_pursuit_MDCTDico.py_pursuit_MDCTDico(dico, useC=False)
        spreadDico = py_pursuit_MDCTDico.py_pursuit_SpreadDico(
            dico, useC=False, allBases=False, Spreadbases=[1024, 8192], penalty=0.1, maskSize=3
        )

        approxClassic, decayClassic = MP.MP(pySig, classicDIco, 20, nbAtoms)
        approxSpread, decaySpread = MP.MP(pySig, spreadDico, 20, nbAtoms)

        plt.figure(figsize=(16, 8))
        plt.subplot(121)
        approxClassic.plotTF(ylim=[0, 4000])
        plt.title("Classic decomposition : 200 atoms 3xMDCT")
        plt.subplot(122)
        approxSpread.plotTF(ylim=[0, 4000])
        plt.title("Decomposition with TF masking: 200 atoms 3xMDCT")
        plt.savefig(name + "_TestTFMasking.eps")

        plt.figure()
        plt.plot([10 * np.log10(i / sigEnergy) for i in decayClassic])
        plt.plot([10 * np.log10(i / sigEnergy) for i in decaySpread], "r")
        plt.legend(("Classic decomposition", "Spreading Atoms"))
        plt.ylabel("Residual energy decay(dB)")
        plt.xlabel("Iteration")
        plt.savefig(name + "_decayTFMasking.eps")

        plt.show()
Example #2
0
    def dicos(self):
        # create a SpreadDico
        pySig = py_pursuit_Signal.InitFromFile("../../../data/glocs.wav", forceMono=True)
        pySig.crop(0, 5 * pySig.samplingFrequency)
        pySig.pad(2048)

        dico = [128, 1024, 8192]

        classicDIco = py_pursuit_MDCTDico.py_pursuit_MDCTDico(dico, useC=False)
        spreadDico = py_pursuit_MDCTDico.py_pursuit_SpreadDico(dico, useC=False, allBases=True, penalty=0, maskSize=3)

        classicDIco.initialize(pySig)
        spreadDico.initialize(pySig)

        classicDIco.update(pySig, 2)
        spreadDico.update(pySig, 2)

        classicAtom1 = classicDIco.getBestAtom(0)
        spreadAtom1 = spreadDico.getBestAtom(0)

        self.assertEqual(classicAtom1, spreadAtom1)

        pySig.subtract(classicAtom1)
        classicDIco.update(pySig, 2)
        spreadDico.update(pySig, 2)

        classicAtom2 = classicDIco.getBestAtom(0)
        spreadAtom2 = spreadDico.getBestAtom(0)

        self.assertNotEqual(classicAtom2, spreadAtom2)