def test_vector_even(self): a = np.random.randn(50) ind = np.arange(25) b = pyyawt.dyaddown(a) b1 = pyyawt.dyaddown(a,0) b2 = pyyawt.dyaddown(a,1) c = a[2*ind+1] c1 = a[2*ind] np.testing.assert_almost_equal(b, b1) np.testing.assert_almost_equal(b, c) np.testing.assert_almost_equal(b2, c1) a = np.random.randn(1,50) ind = np.arange(25) b = pyyawt.dyaddown(a) b1 = pyyawt.dyaddown(a,0) b2 = pyyawt.dyaddown(a,1) b3 = pyyawt.dyaddown(a.T) b4 = pyyawt.dyaddown(a.T,0) b5 = pyyawt.dyaddown(a.T,1) c = a[:,2*ind+1] c1 = a[:,2*ind] np.testing.assert_almost_equal(b, b1) np.testing.assert_almost_equal(b, c) np.testing.assert_almost_equal(b2, c1) np.testing.assert_almost_equal(b3, b4) np.testing.assert_almost_equal(b3, b.T) np.testing.assert_almost_equal(b5, b2.T)
def test_bior(self): s1 = self.s1 x1 = self.x1 x2 = self.x2 wnames = ['bior1.1', 'bior1.3', 'bior1.5', 'bior2.2', 'bior2.4', 'bior2.6', 'bior2.8', 'bior3.1', 'bior3.3', 'bior3.5', 'bior3.7', 'bior3.9', 'bior4.4', 'bior5.5', 'bior6.8'] for N in np.arange(1,13): wname = wnames[N] [cA,cD] = pyyawt.dwt(x1,wname) [Lo_D,Hi_D,Lo_R,Hi_R] = pyyawt.wfilters(wname) caa = pyyawt.dyaddown(pyyawt.wkeep(pyyawt.conv(pyyawt.wextend(1,'symh',x1,np.size(Lo_D),'b'),Lo_D),(np.size(x1)+np.size(Lo_D)-1))) cdd = pyyawt.dyaddown(pyyawt.wkeep(pyyawt.conv(pyyawt.wextend(1,'symh',x1,np.size(Lo_D),'b'),Hi_D),(np.size(x1)+np.size(Lo_D)-1))) np.testing.assert_almost_equal(caa.flatten(), cA) np.testing.assert_almost_equal(cdd.flatten(), cD) [cA,cD] = pyyawt.dwt(x2,wname) caa = pyyawt.dyaddown(pyyawt.wkeep(pyyawt.conv(pyyawt.wextend(1,'symh',x2,np.size(Lo_D),'b'),Lo_D),(np.size(x2)+np.size(Lo_D)-1))) cdd = pyyawt.dyaddown(pyyawt.wkeep(pyyawt.conv(pyyawt.wextend(1,'symh',x2,np.size(Lo_D),'b'),Hi_D),(np.size(x2)+np.size(Lo_D)-1))) np.testing.assert_almost_equal(caa.flatten(), cA) np.testing.assert_almost_equal(cdd.flatten(), cD) [cA,cD] = pyyawt.dwt(s1,wname) caa = pyyawt.dyaddown(pyyawt.wkeep(pyyawt.conv(pyyawt.wextend(1,'symh',s1,np.size(Lo_D),'b'),Lo_D),(np.size(s1)+np.size(Lo_D)-1))) cdd = pyyawt.dyaddown(pyyawt.wkeep(pyyawt.conv(pyyawt.wextend(1,'symh',s1,np.size(Lo_D),'b'),Hi_D),(np.size(s1)+np.size(Lo_D)-1))) np.testing.assert_almost_equal(caa.flatten(), cA) np.testing.assert_almost_equal(cdd.flatten(), cD)
def test_haar(self): s1 = self.s1 x1 = self.x1 x2 = self.x2 [cA,cD] = pyyawt.dwt(x1,'haar') [Lo_D,Hi_D,Lo_R,Hi_R] = pyyawt.wfilters('haar') caa = pyyawt.dyaddown(pyyawt.wkeep(pyyawt.conv(pyyawt.wextend(1,'symh',x1,np.size(Lo_D),'b'),Lo_D),(np.size(x1)+np.size(Lo_D)-1))) cdd = pyyawt.dyaddown(pyyawt.wkeep(pyyawt.conv(pyyawt.wextend(1,'symh',x1,np.size(Lo_D),'b'),Hi_D),(np.size(x1)+np.size(Lo_D)-1))) np.testing.assert_almost_equal(caa.flatten(), cA) np.testing.assert_almost_equal(cdd.flatten(), cD) [cA,cD] = pyyawt.dwt(x2,'haar') caa = pyyawt.dyaddown(pyyawt.wkeep(pyyawt.conv(pyyawt.wextend(1,'symh',x2,np.size(Lo_D),'b'),Lo_D),(np.size(x2)+np.size(Lo_D)-1))) cdd = pyyawt.dyaddown(pyyawt.wkeep(pyyawt.conv(pyyawt.wextend(1,'symh',x2,np.size(Lo_D),'b'),Hi_D),(np.size(x2)+np.size(Lo_D)-1))) np.testing.assert_almost_equal(caa.flatten(), cA) np.testing.assert_almost_equal(cdd.flatten(), cD) [cA,cD] = pyyawt.dwt(s1,'haar') caa = pyyawt.dyaddown(pyyawt.wkeep(pyyawt.conv(pyyawt.wextend(1,'symh',s1,np.size(Lo_D),'b'),Lo_D),(np.size(s1)+np.size(Lo_D)-1))) cdd = pyyawt.dyaddown(pyyawt.wkeep(pyyawt.conv(pyyawt.wextend(1,'symh',s1,np.size(Lo_D),'b'),Hi_D),(np.size(s1)+np.size(Lo_D)-1))) np.testing.assert_almost_equal(caa.flatten(), cA) np.testing.assert_almost_equal(cdd.flatten(), cD)
def test_sym(self): s1 = self.s1 x1 = self.x1 x2 = self.x2 for N in np.arange(4,11): wname = "sym" + str(N) [cA,cD] = pyyawt.dwt(x1,wname) [Lo_D,Hi_D,Lo_R,Hi_R] = pyyawt.wfilters(wname) caa = pyyawt.dyaddown(pyyawt.wkeep(pyyawt.conv(pyyawt.wextend(1,'symh',x1,np.size(Lo_D),'b'),Lo_D),(np.size(x1)+np.size(Lo_D)-1))) cdd = pyyawt.dyaddown(pyyawt.wkeep(pyyawt.conv(pyyawt.wextend(1,'symh',x1,np.size(Lo_D),'b'),Hi_D),(np.size(x1)+np.size(Lo_D)-1))) np.testing.assert_almost_equal(caa.flatten(), cA) np.testing.assert_almost_equal(cdd.flatten(), cD) [cA,cD] = pyyawt.dwt(x2,wname) caa = pyyawt.dyaddown(pyyawt.wkeep(pyyawt.conv(pyyawt.wextend(1,'symh',x2,np.size(Lo_D),'b'),Lo_D),(np.size(x2)+np.size(Lo_D)-1))) cdd = pyyawt.dyaddown(pyyawt.wkeep(pyyawt.conv(pyyawt.wextend(1,'symh',x2,np.size(Lo_D),'b'),Hi_D),(np.size(x2)+np.size(Lo_D)-1))) np.testing.assert_almost_equal(caa.flatten(), cA) np.testing.assert_almost_equal(cdd.flatten(), cD) [cA,cD] = pyyawt.dwt(s1,wname) caa = pyyawt.dyaddown(pyyawt.wkeep(pyyawt.conv(pyyawt.wextend(1,'symh',s1,np.size(Lo_D),'b'),Lo_D),(np.size(s1)+np.size(Lo_D)-1))) cdd = pyyawt.dyaddown(pyyawt.wkeep(pyyawt.conv(pyyawt.wextend(1,'symh',s1,np.size(Lo_D),'b'),Hi_D),(np.size(s1)+np.size(Lo_D)-1))) np.testing.assert_almost_equal(caa.flatten(), cA) np.testing.assert_almost_equal(cdd.flatten(), cD)
def test_dwtMode(self): s1 = self.s1 x1 = self.x1 x2 = self.x2 # ST = pyyawt.dwtmode("status","nodisp") dwtModes = ['symw', 'asymh', 'asymw', 'zpd', 'sp0', 'sp1', 'ppd','per'] wname = "db10" for N in np.arange(len(dwtModes)-1): # pyyawt.dwtmode(dwtModes[N]) [cA,cD] = pyyawt.dwt(x1,wname,"mode",dwtModes[N]) [Lo_D,Hi_D,Lo_R,Hi_R] = pyyawt.wfilters(wname) caa = pyyawt.dyaddown(pyyawt.wkeep(pyyawt.conv(pyyawt.wextend(1,dwtModes[N],x1,np.size(Lo_D),'b'),Lo_D),(np.size(x1)+np.size(Lo_D)-1))) cdd = pyyawt.dyaddown(pyyawt.wkeep(pyyawt.conv(pyyawt.wextend(1,dwtModes[N],x1,np.size(Lo_D),'b'),Hi_D),(np.size(x1)+np.size(Lo_D)-1))) np.testing.assert_almost_equal(caa.flatten(), cA) np.testing.assert_almost_equal(cdd.flatten(), cD) [cA,cD] = pyyawt.dwt(x2,wname,"mode",dwtModes[N]) caa = pyyawt.dyaddown(pyyawt.wkeep(pyyawt.conv(pyyawt.wextend(1,dwtModes[N],x2,np.size(Lo_D),'b'),Lo_D),(np.size(x2)+np.size(Lo_D)-1))) cdd = pyyawt.dyaddown(pyyawt.wkeep(pyyawt.conv(pyyawt.wextend(1,dwtModes[N],x2,np.size(Lo_D),'b'),Hi_D),(np.size(x2)+np.size(Lo_D)-1))) np.testing.assert_almost_equal(caa.flatten(), cA) np.testing.assert_almost_equal(cdd.flatten(), cD) [cA,cD] = pyyawt.dwt(s1,wname,"mode",dwtModes[N]) caa = pyyawt.dyaddown(pyyawt.wkeep(pyyawt.conv(pyyawt.wextend(1,dwtModes[N],s1,np.size(Lo_D),'b'),Lo_D),(np.size(s1)+np.size(Lo_D)-1))) cdd = pyyawt.dyaddown(pyyawt.wkeep(pyyawt.conv(pyyawt.wextend(1,dwtModes[N],s1,np.size(Lo_D),'b'),Hi_D),(np.size(s1)+np.size(Lo_D)-1))) np.testing.assert_almost_equal(caa.flatten(), cA) np.testing.assert_almost_equal(cdd.flatten(), cD) N = len(dwtModes) - 1 [cA,cD] = pyyawt.dwt(x1,wname,"mode",dwtModes[N]) [Lo_D,Hi_D,Lo_R,Hi_R] = pyyawt.wfilters(wname) caa = pyyawt.dyaddown(pyyawt.wkeep(pyyawt.conv(pyyawt.wextend(1,dwtModes[N],x1,np.size(Lo_D),'b'),Lo_D),(np.size(x1)))) cdd = pyyawt.dyaddown(pyyawt.wkeep(pyyawt.conv(pyyawt.wextend(1,dwtModes[N],x1,np.size(Lo_D),'b'),Hi_D),(np.size(x1)))) np.testing.assert_almost_equal(caa.flatten(), cA) np.testing.assert_almost_equal(cdd.flatten(), cD) [cA,cD] = pyyawt.dwt(x2,wname,"mode",dwtModes[N]) caa = pyyawt.dyaddown(pyyawt.wkeep(pyyawt.conv(pyyawt.wextend(1,dwtModes[N],x2,np.size(Lo_D),'b'),Lo_D),(np.size(x2)))) cdd = pyyawt.dyaddown(pyyawt.wkeep(pyyawt.conv(pyyawt.wextend(1,dwtModes[N],x2,np.size(Lo_D),'b'),Hi_D),(np.size(x2)))) np.testing.assert_almost_equal(caa.flatten(), cA) np.testing.assert_almost_equal(cdd.flatten(), cD) [cA,cD] = pyyawt.dwt(s1,wname,"mode",dwtModes[N]) caa = pyyawt.dyaddown(pyyawt.wkeep(pyyawt.conv(pyyawt.wextend(1,dwtModes[N],s1,np.size(Lo_D),'b'),Lo_D),(np.size(s1)))) cdd = pyyawt.dyaddown(pyyawt.wkeep(pyyawt.conv(pyyawt.wextend(1,dwtModes[N],s1,np.size(Lo_D),'b'),Hi_D),(np.size(s1)))) np.testing.assert_almost_equal(caa.flatten(), cA) np.testing.assert_almost_equal(cdd.flatten(), cD)
def test_matrix(self): a = np.random.randn(50,51) b = pyyawt.dyaddown(a) b1 = pyyawt.dyaddown(a,0) b2 = pyyawt.dyaddown(a,1) b3 = pyyawt.dyaddown(a, 'r') b4 = pyyawt.dyaddown(a, 'c') b5 = pyyawt.dyaddown(a, 'm') b6 = pyyawt.dyaddown(a, 0, 'r') b7 = pyyawt.dyaddown(a, 0, 'c') b8 = pyyawt.dyaddown(a, 0, 'm') b9 = pyyawt.dyaddown(a, 1, 'r') b10 = pyyawt.dyaddown(a, 1, 'c') b11 = pyyawt.dyaddown(a, 1, 'm') ind = np.arange(25) ind1 = np.arange(26) c = a[2*ind+1,:] c1 = a[2*ind,:] c2 = a[:, 2*ind+1] c3 = a[:,2*ind1] c4 = a[2*ind+1,:][:,2*ind+1] c5 = a[2*ind,:][:,2*ind+1] c7 = a[2*ind,:][:,2*ind1] np.testing.assert_almost_equal(b, c2) np.testing.assert_almost_equal(b1, b) np.testing.assert_almost_equal(b2, c3) np.testing.assert_almost_equal(b3, c) np.testing.assert_almost_equal(b4, c2) np.testing.assert_almost_equal(b5, c4) np.testing.assert_almost_equal(b6, c) np.testing.assert_almost_equal(b7, c2) np.testing.assert_almost_equal(b8, c4) np.testing.assert_almost_equal(b9, c1) np.testing.assert_almost_equal(b10, c3) np.testing.assert_almost_equal(b11, c7)