Пример #1
0
 def plotvector(self, vector, amp=None, color='red',
                device='/XWIN', step=0):
    """
    dftvector.plotvector(vector, amp=None, color='red',
                         device='/XWIN', step=0)
         Plot 'vector' in the complex plane.
    """
    x = Numeric.zeros(self.numvect+1, 'd')
    y = Numeric.zeros(self.numvect+1, 'd')
    x[1:] = vector.real
    y[1:] = vector.imag
    if not amp:
       amp = 1.1 * umath.maximum(max(umath.absolute(x)),
                                 max(umath.absolute(y)))
    if step:
       for ii in range(self.numvect):
          sleep(0.01)
          plotxy(y[ii:ii+2], x[ii:ii+2],
                 rangex=[-amp, amp], rangey=[-amp, amp],
                 labx='Real Amplitude', laby='Imaginary Amplitude',
                 color=color, aspect=1.0)
    else:
       plotxy(y, x, rangex=[-amp, amp], rangey=[-amp, amp],
              labx='Real Amplitude', laby='Imaginary Amplitude',
              color=color, aspect=1.0)
Пример #2
0
 def plotvector(self, vector, amp=None, color='red',
                device='/XWIN', step=0):
    """
    dftvector.plotvector(vector, amp=None, color='red',
                         device='/XWIN', step=0)
         Plot 'vector' in the complex plane.
    """
    x = Numeric.zeros(self.numvect+1, 'd')
    y = Numeric.zeros(self.numvect+1, 'd')
    x[1:] = vector.real
    y[1:] = vector.imag
    if not amp:
       amp = 1.1 * umath.maximum(max(umath.absolute(x)),
                                 max(umath.absolute(y)))
    if step:
       for ii in xrange(self.numvect):
          sleep(0.01)
          plotxy(y[ii:ii+2], x[ii:ii+2],
                 rangex=[-amp, amp], rangey=[-amp, amp],
                 labx='Real Amplitude', laby='Imaginary Amplitude',
                 color=color, aspect=1.0)
    else:
       plotxy(y, x, rangex=[-amp, amp], rangey=[-amp, amp],
              labx='Real Amplitude', laby='Imaginary Amplitude',
              color=color, aspect=1.0)
Пример #3
0
def _floatFormat(data, precision, suppress_small, sign=0):
    exp_format = 0
    errstate = _gen.seterr(all='ignore')
    non_zero = _uf.absolute(data.compress(_uf.not_equal(data, 0)))
    ##non_zero = _numeric_compress(data) ##
    if len(non_zero) == 0:
        max_val = 0.
        min_val = 0.
    else:
        max_val = max_reduce(non_zero)
        min_val = min_reduce(non_zero)
        if max_val >= 1.e8:
            exp_format = 1
        if not suppress_small and (min_val < 0.0001
                                   or max_val / min_val > 1000.):
            exp_format = 1
    _gen.seterr(**errstate)
    if exp_format:
        large_exponent = 0 < min_val < 1e-99 or max_val >= 1e100
        max_str_len = 8 + precision + large_exponent
        if sign: format = '%+'
        else: format = '%'
        format = format + str(max_str_len) + '.' + str(precision) + 'e'
        if large_exponent: format = format + '3'
    else:
        format = '%.' + str(precision) + 'f'
        precision = min(precision,
                        max([_digits(x, precision, format) for x in data]))
        max_str_len = len(str(int(max_val))) + precision + 2
        if sign: format = '%#+'
        else: format = '%#'
        format = format + str(max_str_len) + '.' + str(precision) + 'f'
    return format
Пример #4
0
def _floatFormat(data, precision, suppress_small, sign = 0):
    exp_format = 0
    errstate = _gen.seterr(all='ignore')
    non_zero = _uf.absolute(data.compress(_uf.not_equal(data, 0)))
    ##non_zero = _numeric_compress(data) ##
    if len(non_zero) == 0:
        max_val = 0.
        min_val = 0.
    else:
        max_val = max_reduce(non_zero)
        min_val = min_reduce(non_zero)
        if max_val >= 1.e8:
            exp_format = 1
        if not suppress_small and (min_val < 0.0001
                                   or max_val/min_val > 1000.):
            exp_format = 1
    _gen.seterr(**errstate)
    if exp_format:
        large_exponent = 0 < min_val < 1e-99 or max_val >= 1e100
        max_str_len = 8 + precision + large_exponent
        if sign: format = '%+'
        else: format = '%'
        format = format + str(max_str_len) + '.' + str(precision) + 'e'
        if large_exponent: format = format + '3'
    else:
        format = '%.' + str(precision) + 'f'
        precision = min(precision, max([_digits(x, precision, format)
                                        for x in data]))
        max_str_len = len(str(int(max_val))) + precision + 2
        if sign: format = '%#+'
        else: format = '%#'
        format = format + str(max_str_len) + '.' + str(precision) + 'f'
    return format
Пример #5
0
    def fillFormat(self, data):
        import numeric as _nc
        errstate = _nc.seterr(all='ignore')
        try:
            special = isnan(data) | isinf(data) | isna(data)
            special[isna(data)] = False
            valid = not_equal(data, 0) & ~special
            valid[isna(data)] = False
            non_zero = absolute(data.compress(valid))
            if len(non_zero) == 0:
                max_val = 0.
                min_val = 0.
            else:
                max_val = maximum.reduce(non_zero, skipna=True)
                min_val = minimum.reduce(non_zero, skipna=True)
                if max_val >= 1.e8:
                    self.exp_format = True
                if not self.suppress_small and (min_val < 0.0001
                                           or max_val/min_val > 1000.):
                    self.exp_format = True
        finally:
            _nc.seterr(**errstate)

        if self.exp_format:
            self.large_exponent = 0 < min_val < 1e-99 or max_val >= 1e100
            self.max_str_len = 8 + self.precision
            if self.large_exponent:
                self.max_str_len += 1
            if self.sign:
                format = '%+'
            else:
                format = '%'
            format = format + '%d.%de' % (self.max_str_len, self.precision)
        else:
            format = '%%.%df' % (self.precision,)
            if len(non_zero):
                precision = max([_digits(x, self.precision, format)
                                 for x in non_zero])
            else:
                precision = 0
            precision = min(self.precision, precision)
            self.max_str_len = len(str(int(max_val))) + precision + 2
            if _nc.any(special):
                self.max_str_len = max(self.max_str_len,
                                       len(_nan_str),
                                       len(_inf_str)+1,
                                       len(_na_str))
            if self.sign:
                format = '%#+'
            else:
                format = '%#'
            format = format + '%d.%df' % (self.max_str_len, precision)

        self.special_fmt = '%%%ds' % (self.max_str_len,)
        self.format = format
Пример #6
0
    def fillFormat(self, data):
        import numeric as _nc
        errstate = _nc.seterr(all='ignore')
        try:
            special = isnan(data) | isinf(data) | isna(data)
            special[isna(data)] = False
            valid = not_equal(data, 0) & ~special
            valid[isna(data)] = False
            non_zero = absolute(data.compress(valid))
            if len(non_zero) == 0:
                max_val = 0.
                min_val = 0.
            else:
                max_val = maximum.reduce(non_zero, skipna=True)
                min_val = minimum.reduce(non_zero, skipna=True)
                if max_val >= 1.e8:
                    self.exp_format = True
                if not self.suppress_small and (min_val < 0.0001
                                                or max_val / min_val > 1000.):
                    self.exp_format = True
        finally:
            _nc.seterr(**errstate)

        if self.exp_format:
            self.large_exponent = 0 < min_val < 1e-99 or max_val >= 1e100
            self.max_str_len = 8 + self.precision
            if self.large_exponent:
                self.max_str_len += 1
            if self.sign:
                format = '%+'
            else:
                format = '%'
            format = format + '%d.%de' % (self.max_str_len, self.precision)
        else:
            format = '%%.%df' % (self.precision, )
            if len(non_zero):
                precision = max(
                    [_digits(x, self.precision, format) for x in non_zero])
            else:
                precision = 0
            precision = min(self.precision, precision)
            self.max_str_len = len(str(int(max_val))) + precision + 2
            if _nc.any(special):
                self.max_str_len = max(self.max_str_len, len(_nan_str),
                                       len(_inf_str) + 1, len(_na_str))
            if self.sign:
                format = '%#+'
            else:
                format = '%#'
            format = format + '%d.%df' % (self.max_str_len, precision)

        self.special_fmt = '%%%ds' % (self.max_str_len, )
        self.format = format
Пример #7
0
def vector_amplitude(vector):
   return umath.absolute(vector[-1])
Пример #8
0
 def maxamplitude(self):
    """
    dftvector.maxamplitude():
         Return the maximum possible amplitude for a dftvector.
    """
    return umath.add.reduce(umath.absolute(self.components))
Пример #9
0
def vector_amplitude(vector):
    return umath.absolute(vector[-1])
Пример #10
0
 def maxamplitude(self):
     """
   dftvector.maxamplitude():
        Return the maximum possible amplitude for a dftvector.
   """
     return umath.add.reduce(umath.absolute(self.components))