コード例 #1
0
 def test_05(self):
     N = 16
     Nd = 5
     K = 2
     M = 4
     D = cp.random.randn(Nd, Nd, M)
     s = cp.random.randn(N, N, K)
     lmbda = 1e-1
     b = cbpdn.ConvBPDN(D, s, lmbda)
     assert b.cri.dimC == 0
     assert b.cri.dimK == 1
コード例 #2
0
 def test_01(self):
     N = 16
     Nd = 5
     Cs = 3
     M = 4
     D = cp.random.randn(Nd, Nd, M)
     s = cp.random.randn(N, N, Cs)
     lmbda = 1e-1
     b = cbpdn.ConvBPDN(D, s, lmbda, dimK=0)
     assert b.cri.dimC == 1
     assert b.cri.dimK == 0
コード例 #3
0
 def test_03(self):
     N = 16
     Nd = 5
     Cd = 3
     M = 4
     D = cp.random.randn(Nd, Nd, Cd, M)
     s = cp.random.randn(N, N, Cd)
     lmbda = 1e-1
     b = cbpdn.ConvBPDN(D, s, lmbda)
     assert b.cri.dimC == 1
     assert b.cri.dimK == 0
コード例 #4
0
 def test_02(self):
     N = 16
     Nd = 5
     Cs = 3
     K = 5
     M = 4
     D = cp.random.randn(Nd, Nd, M)
     s = cp.random.randn(N, N, Cs, K)
     lmbda = 1e-1
     b = cbpdn.ConvBPDN(D, s, lmbda)
     assert b.cri.dimC == 1
     assert b.cri.dimK == 1
コード例 #5
0
 def test_09(self):
     N = 16
     Nd = 5
     M = 4
     D = cp.random.randn(Nd, Nd, M)
     s = cp.random.randn(N, N)
     try:
         b = cbpdn.ConvBPDN(D, s)
         b.solve()
     except Exception as e:
         print(e)
         assert 0
コード例 #6
0
 def test_12(self):
     N = 16
     Nd = 5
     Cs = 3
     M = 4
     D = cp.random.randn(Nd, Nd, M)
     s = cp.random.randn(N, N, Cs)
     lmbda = 1e-1
     L = 1e3
     opt = cbpdn.ConvBPDN.Options({'L': L})
     b = cbpdn.ConvBPDN(D, s, lmbda, opt=opt, dimK=0)
     b.solve()
     assert list2array(b.getitstat().Rsdl)[-1] < 1e-3
コード例 #7
0
 def test_06(self):
     N = 16
     Nd = 5
     K = 2
     M = 4
     D = cp.random.randn(Nd, Nd, M)
     s = cp.random.randn(N, N, K)
     dt = cp.float32
     opt = cbpdn.ConvBPDN.Options({'Verbose': False, 'MaxMainIter': 20,
                                   'Backtrack': BacktrackStandard(),
                                   'DataType': dt})
     lmbda = 1e-1
     b = cbpdn.ConvBPDN(D, s, lmbda, opt=opt)
     b.solve()
     assert b.X.dtype == dt
     assert b.Xf.dtype == complex_dtype(dt)
     assert b.Yf.dtype == complex_dtype(dt)
コード例 #8
0
 def test_18(self):
     N = 16
     Nd = 5
     Cs = 3
     M = 4
     D = cp.random.randn(Nd, Nd, M)
     s = cp.random.randn(N, N, Cs)
     lmbda = 1e-1
     L = 1e3
     try:
         opt = cbpdn.ConvBPDN.Options({'Monotone': True, 'L': L})
         b = cbpdn.ConvBPDN(D, s, lmbda, opt=opt, dimK=0)
         b.solve()
     except Exception as e:
         print(e)
         assert 0
     assert list2array(b.getitstat().Rsdl)[-1] < 1e-3
コード例 #9
0
 def test_11(self):
     N = 63
     M = 4
     Nd = 8
     D = cp.random.randn(Nd, Nd, M)
     X0 = cp.zeros((N, N, M))
     xr = cp.random.randn(N, N, M)
     xp = cp.abs(xr) > 3
     X0[xp] = cp.random.randn(X0[xp].size)
     S = cp.sum(ifftn(fftn(D, (N, N), (0, 1)) *
                      fftn(X0, None, (0, 1)), None, (0, 1)).real,
                axis=2)
     lmbda = 1e-2
     L = 1e3
     opt = cbpdn.ConvBPDN.Options({'Verbose': False, 'MaxMainIter': 2000,
                                   'RelStopTol': 1e-9, 'L': L,
                                   'Backtrack': BacktrackStandard()})
     b = cbpdn.ConvBPDN(D, S, lmbda, opt)
     b.solve()
     X1 = b.X.squeeze()
     assert rrs(X0, X1) < 5e-4
     Sr = b.reconstruct().squeeze()
     assert rrs(S, Sr) < 2e-4