Esempio n. 1
0
    def sample(self, m):
        """

        Samples m samples from the current LpNestedSymmetric distribution.

        :param m: Number of samples to draw.
        :type m: int.
        :returns:  A Data object containing the samples
        :rtype:    natter.DataModule.Data

        """
        ret = zeros((self.param['f'].n[()], m))
        r = beta(float(self.param['f'].n[()]), 1.0, (1, m))
        _recsample((), r, self.param['f'], m, ret)

        ret = Data(ret, 'Samples from ' + self.name)
        ret.scale(self.param['rp'].sample(m).X / self.param['f'].f(ret).X)

        return ret
    def sample(self,m):
        """

        Samples m samples from the current LpSphericallySymmetric distribution.

        :param m: Number of samples to draw.
        :type m: int.
        :returns:  A Data object containing the samples
        :rtype:    natter.DataModule.Data

        """
        # sample from a p-generlized normal with scale 1
        z = gamma(1/self.param['p'],1.0,(self.param['n'],m))
        z = abs(z)**(1/self.param['p'])
        dat =  Data(z * sign(randn(self.param['n'],m)),'Samples from ' + self.name, \
                      ['sampled ' + str(m) + ' examples from Lp-generalized Normal'])
        # normalize the samples to get a uniform distribution.
        dat.normalize(self.param['p'])
        r = self.param['rp'].sample(m)
        dat.scale(r)
        return dat
Esempio n. 3
0
    def sample(self, m):
        """

        Samples m samples from the current LpSphericallySymmetric distribution.

        :param m: Number of samples to draw.
        :type m: int.
        :returns:  A Data object containing the samples
        :rtype:    natter.DataModule.Data

        """
        # sample from a p-generlized normal with scale 1
        z = gamma(1 / self.param['p'], 1.0, (self.param['n'], m))
        z = abs(z)**(1 / self.param['p'])
        dat =  Data(z * sign(randn(self.param['n'],m)),'Samples from ' + self.name, \
                      ['sampled ' + str(m) + ' examples from Lp-generalized Normal'])
        # normalize the samples to get a uniform distribution.
        dat.normalize(self.param['p'])
        r = self.param['rp'].sample(m)
        dat.scale(r)
        return dat