示例#1
0
 def test_09(self):
     rho = 1e-1
     N = 32
     M = 16
     K = 8
     D = util.complex_randn(N, N, 1, 1, M)
     X = util.complex_randn(N, N, 1, K, M)
     S = np.sum(D*X, axis=4, keepdims=True)
     Z = (D.conj()*np.sum(D*X, axis=4, keepdims=True) + \
          rho*X - D.conj()*S) / rho
     Xslv = linalg.solvedbi_sm(D, rho, D.conj()*S + rho*Z)
     assert(linalg.rrs(D.conj()*np.sum(D*Xslv, axis=4, keepdims=True) +
                     rho*Xslv, D.conj()*S + rho*Z) < 1e-11)
示例#2
0
 def test_09(self):
     rho = 1e-1
     N = 32
     M = 16
     K = 8
     D = util.complex_randn(N, N, 1, 1, M)
     X = util.complex_randn(N, N, 1, K, M)
     S = np.sum(D*X, axis=4, keepdims=True)
     Z = (D.conj()*np.sum(D*X, axis=4, keepdims=True) + \
          rho*X - D.conj()*S) / rho
     Xslv = linalg.solvedbi_sm(D, rho, D.conj()*S + rho*Z)
     assert(linalg.rrs(D.conj()*np.sum(D*Xslv, axis=4, keepdims=True) +
                     rho*Xslv, D.conj()*S + rho*Z) < 1e-11)
示例#3
0
 def test_10(self):
     N = 32
     M = 16
     K = 8
     D = util.complex_randn(N, N, 1, 1, M)
     X = util.complex_randn(N, N, 1, K, M)
     S = np.sum(D*X, axis=4, keepdims=True)
     d = 1e-1 * (np.random.randn(N, N, 1, 1, M).astype('complex') +
         np.random.randn(N, N, 1, 1, M).astype('complex') * 1.0j)
     Z = (D.conj()*np.sum(D*X, axis=4, keepdims=True) +
          d*X - D.conj()*S) / d
     Xslv = linalg.solvedbd_sm(D, d, D.conj()*S + d*Z)
     assert(linalg.rrs(D.conj()*np.sum(D*Xslv, axis=4, keepdims=True) +
                     d*Xslv, D.conj()*S + d*Z) < 1e-11)
示例#4
0
 def test_10(self):
     N = 32
     M = 16
     K = 8
     D = util.complex_randn(N, N, 1, 1, M)
     X = util.complex_randn(N, N, 1, K, M)
     S = np.sum(D*X, axis=4, keepdims=True)
     d = 1e-1 * (np.random.randn(N, N, 1, 1, M).astype('complex') +
         np.random.randn(N, N, 1, 1, M).astype('complex') * 1.0j)
     Z = (D.conj()*np.sum(D*X, axis=4, keepdims=True) +
          d*X - D.conj()*S) / d
     Xslv = linalg.solvedbd_sm(D, d, D.conj()*S + d*Z)
     assert(linalg.rrs(D.conj()*np.sum(D*Xslv, axis=4, keepdims=True) +
                     d*Xslv, D.conj()*S + d*Z) < 1e-11)
示例#5
0
    def test_15(self):
        rho = 1e-1
        N = 32
        M = 16
        K = 8
        D = util.complex_randn(N, N, 1, 1, M)
        X = util.complex_randn(N, N, 1, K, M)
        S = np.sum(D*X, axis=4, keepdims=True)

        Xop = lambda x: np.sum(X * x, axis=4, keepdims=True)
        XHop = lambda x: np.sum(np.conj(X) * x, axis=3, keepdims=True)
        Z = (XHop(Xop(D)) + rho*D - XHop(S)) / rho
        Dslv, cgit = linalg.solvemdbi_cg(X, rho, XHop(S)+rho*Z, 4, 3, tol=1e-6)

        assert linalg.rrs(XHop(Xop(Dslv)) + rho*Dslv, XHop(S) + rho*Z) <= 1e-6
示例#6
0
    def test_15(self):
        rho = 1e-1
        N = 32
        M = 16
        K = 8
        D = util.complex_randn(N, N, 1, 1, M)
        X = util.complex_randn(N, N, 1, K, M)
        S = np.sum(D*X, axis=4, keepdims=True)

        Xop = lambda x: np.sum(X * x, axis=4, keepdims=True)
        XHop = lambda x: np.sum(np.conj(X) * x, axis=3, keepdims=True)
        Z = (XHop(Xop(D)) + rho*D - XHop(S)) / rho
        Dslv, cgit = linalg.solvemdbi_cg(X, rho, XHop(S)+rho*Z, 4, 3, tol=1e-6)

        assert linalg.rrs(XHop(Xop(Dslv)) + rho*Dslv, XHop(S) + rho*Z) <= 1e-6
示例#7
0
    def test_14(self):
        rho = 1e-1
        N = 64
        M = 32
        C = 3
        K = 8
        D = util.complex_randn(N, N, C, 1, M)
        X = util.complex_randn(N, N, 1, K, M)
        S = np.sum(D*X, axis=4, keepdims=True)

        Xop = lambda x: np.sum(X * x, axis=4, keepdims=True)
        XHop = lambda x: np.sum(np.conj(X) * x, axis=3, keepdims=True)
        Z = (XHop(Xop(D)) + rho*D - XHop(S)) / rho
        Dslv = linalg.solvemdbi_rsm(X, rho, XHop(S) + rho*Z, 3)

        assert linalg.rrs(XHop(Xop(Dslv)) + rho*Dslv, XHop(S) + rho*Z) < 1e-11
示例#8
0
    def test_14(self):
        rho = 1e-1
        N = 64
        M = 32
        C = 3
        K = 8
        D = util.complex_randn(N, N, C, 1, M)
        X = util.complex_randn(N, N, 1, K, M)
        S = np.sum(D*X, axis=4, keepdims=True)

        Xop = lambda x: np.sum(X * x, axis=4, keepdims=True)
        XHop = lambda x: np.sum(np.conj(X) * x, axis=3, keepdims=True)
        Z = (XHop(Xop(D)) + rho*D - XHop(S)) / rho
        Dslv = linalg.solvemdbi_rsm(X, rho, XHop(S) + rho*Z, 3)

        assert linalg.rrs(XHop(Xop(Dslv)) + rho*Dslv, XHop(S) + rho*Z) < 1e-11