示例#1
0
文件: fixture.py 项目: 9578577/mvn
    def makeObjects(flat=None, ndim=None, seed=None):        
        if seed is None:
            seed = randint(1, 1e6)
            
        numpy.random.seed(seed)
        randn = numpy.random.randn
    
        if ndim is None:
            ndim = randint(0, 20)
            
        shapes = {
            None:lambda :max(randint(-ndim, ndim), 0),
            True:lambda :randint(1, ndim),
            False:lambda :0,
        }
    
        triple = lambda x:[x, x, x]
        
        if flat in shapes:
            flat = [item() for item in triple(shapes[flat])]

        elif isinstance(flat, int):
            flat = triple(flat)
        
        assert all(f <= ndim for f in flat), "flatness can't be larger than ndim"
        
        rvec = lambda n=1, ndim=ndim:Matrix(randn(n ,ndim))
                
        A,B,C = [
            Mvn.rand([ndim-F, ndim])
            for F in flat
        ]
    
    
        n = randint(1, 2*ndim)
        M = rvec(n).H
        M2 = rvec(n).H    
    
        E = Matrix.eye(ndim)
        
        K1 = (numpy.random.randn())
        K2 = (numpy.random.randn())
    
        N = randint(-5, 5)
        
        return {
            'ndim' : ndim,
            'A' : A,
            'B' : B,
            'C' : C,
            'M' : M,
            'M2' : M2,
            'E' : E,
            'K1' : K1,
            'K2' : K2,
            'N' : N,
        }
示例#2
0
    def makeObjects(flat=None, ndim=None, seed=None):
        if seed is None:
            seed = randint(1, 1e6)

        numpy.random.seed(seed)
        randn = numpy.random.randn

        if ndim is None:
            ndim = randint(0, 20)

        shapes = {
            None: lambda: max(randint(-ndim, ndim), 0),
            True: lambda: randint(1, ndim),
            False: lambda: 0,
        }

        triple = lambda x: [x, x, x]

        if flat in shapes:
            flat = [item() for item in triple(shapes[flat])]

        elif isinstance(flat, int):
            flat = triple(flat)

        assert all(f <= ndim
                   for f in flat), "flatness can't be larger than ndim"

        rvec = lambda n=1, ndim=ndim: Matrix(randn(n, ndim))

        A, B, C = [Mvn.rand([ndim - F, ndim]) for F in flat]

        n = randint(1, 2 * ndim)
        M = rvec(n).H
        M2 = rvec(n).H

        E = Matrix.eye(ndim)

        K1 = (numpy.random.randn())
        K2 = (numpy.random.randn())

        N = randint(-5, 5)

        return {
            'ndim': ndim,
            'A': A,
            'B': B,
            'C': C,
            'M': M,
            'M2': M2,
            'E': E,
            'K1': K1,
            'K2': K2,
            'N': N,
        }
示例#3
0
文件: plane.py 项目: 9578577/mvn
        Nself = self.vectors.null()
        Nother = other.vectors.null()

        #and stack them
        null = numpy.vstack([
            Nself,
            Nother,
        ])

        mean = numpy.hstack([self.mean, other.mean])

        #get length of the component of the means along each null vector
        r = numpy.vstack([Nself*self.mean.H, Nother*other.mean.H])

        
        mean = (numpy.linalg.pinv(null, 1e-6)*r).H

        return type(self)(vectors= null.null(), mean=mean)


if __debug__:
    ndim = helpers.randint(1, 10)
    
    A = Plane(
        mean = numpy.random.randn(1, ndim),
        vectors = numpy.random.randn(helpers.randint(1, ndim), ndim)
    )
    
if __name__ == '__main__':
    pass
示例#4
0
文件: plane.py 项目: riviera2015/mvn
        """
        plane intersection
        """
        Nself = self.vectors.null()
        Nother = other.vectors.null()

        #and stack them
        null = numpy.vstack([
            Nself,
            Nother,
        ])

        mean = numpy.hstack([self.mean, other.mean])

        #get length of the component of the means along each null vector
        r = numpy.vstack([Nself * self.mean.H, Nother * other.mean.H])

        mean = (numpy.linalg.pinv(null, 1e-6) * r).H

        return type(self)(vectors=null.null(), mean=mean)


if __debug__:
    ndim = helpers.randint(1, 10)

    A = Plane(mean=numpy.random.randn(1, ndim),
              vectors=numpy.random.randn(helpers.randint(1, ndim), ndim))

if __name__ == '__main__':
    pass