Ignore:
Timestamp:
03/01/12 14:46:51 (13 years ago)
Author:
neise
Message:
filters work now also in the case of: length = 0 ... they do nothing then
File:
1 edited

Legend:

Unmodified
Added
Removed
  • fact/tools/pyscripts/pyfact/fir_filter.py

    r12953 r12983  
    2323    def __call__(self, data):
    2424        length = max(len(self.a),len(self.b))-1
    25        
    26         #print data
    27         #print data.ndim
    28         #print data.shape
    29         if ( data.ndim == 1):
    30             initial = np.ones(length)
    31             initial *= data[0]
    32         elif ( data.ndim == 2):
    33             initial = np.ones( (data.shape[0], length) )
    34             for i in range(data.shape[0]):
    35                 initial[i,:] *= data[i,0]
     25        if length > 0:
     26            if ( data.ndim == 1):
     27                initial = np.ones(length)
     28                initial *= data[0]
     29            elif ( data.ndim == 2):
     30                initial = np.ones( (data.shape[0], length) )
     31                for i in range(data.shape[0]):
     32                    initial[i,:] *= data[i,0]
     33            else:
     34                print 'HELP.'
     35                pass
     36           
     37            filtered, zf = signal.lfilter(self.b, self.a, data, zi=initial)
    3638        else:
    37             print 'HELP.'
    38             pass
    39        
    40         #print 'initial:\n' , initial
    41         filtered, zf = signal.lfilter(self.b, self.a, data, zi=initial)
    42         #filtered= signal.lfilter(self.b, self.a, data)
     39            filtered= signal.lfilter(self.b, self.a, data)           
    4340        return filtered
    4441
     
    6360        b = np.ones(length)
    6461        a = np.zeros(length)
    65         a[0] = len(b)
     62        if length > 0:
     63            a[0] = len(b)
    6664        FirFilter.__init__(self, b, a, 'sliding average')
    6765           
     
    7371        b = np.zeros(length)
    7472        a = np.zeros(length)
    75 
    76         b[0] = -1. * ratio
    77         b[length-1] = 1.
    78         a[0] = 1.
     73        if length > 0:
     74            b[0] = -1. * ratio
     75            b[length-1] = 1.
     76            a[0] = 1.
    7977        FirFilter.__init__(self, b, a, 'constant fraction discriminator')
    8078
Note: See TracChangeset for help on using the changeset viewer.