Exemple #1
0
    def ichol(K, eta):
        #DEBUG: IO.pickle('/tmp/matrices/K' + str(N) + '.txt', K)
        N = len(K)  # shape[0]
        d = np.diag(K).copy()

        j = 0
        perm = [0] * N
        nu = [0] * N
        R = Lists.zeros2(N, N)
        while j < N:
            best_i = np.argmax(d)
            if d[best_i] <= eta:
                break
            perm[j] = best_i
            p_j = perm[j]
            nu[j] = np.sqrt(d[p_j])
            for i in xrange(N):
                R[j][i] = K[i][p_j]
                for jj in xrange(j):  # inner summation.  R
                    R[j][i] -= R[jj][i]*R[jj][p_j]
                R[j][i] /= nu[j]
                d[i] -= R[j][i]*R[j][i]
            # finally
            j += 1
        D = j

        model = common.Struct()
        model.D = D
        model.R = R[:D]
        model.perm = perm[:D]
        model.nu = np.array(nu[:D])
        model.K = K
        return model
Exemple #2
0
    def getRepresentations(model, K):
        N = len(K)
        D = model.D
        r = Lists.zeros2(N, D)

        for j in xrange(D):
            p_j = model.perm[j]
            for i in xrange(N):
                r[i][j] = K[i][p_j]
                for jj in xrange(j):
                    r[i][j] -= r[i][jj] * model.R[jj][p_j]
                r[i][j] /= model.nu[j]

        return np.mat(r)