Ejemplo n.º 1
0
class WindowedAverage:
    def __init__(self, window):
        if have_numpy:
            self.window = numpy.array(window)
        else:
            self.window = list(window)
            
        self.buffer = Ringbuffer(len(window))
        
        
    def new_sample(self, x):
        self.buffer.new_sample(x)
        
        if have_numpy:
            avg = numpy.mean(self.buffer.get_samples() * self.window)
        else:
            i = 0
            sum = 0
            for s in self.buffer.get_samples():
                sum += self.window[i]*s
                i = i + 1
                
            avg = sum/len(self.window)
            
            
        return avg
Ejemplo n.º 2
0
class Erosion:
    def __init__(self, window):
        self.window = window
        self.buffer = Ringbuffer(window)

    def new_sample(self, x):
        self.buffer.new_sample(x)
        return min(self.buffer.get_samples())
Ejemplo n.º 3
0
class Erosion:
    def __init__(self, window):
        self.window = window
        self.buffer = Ringbuffer(window)
        
    def new_sample(self, x):
        self.buffer.new_sample(x)
        return min(self.buffer.get_samples())
Ejemplo n.º 4
0
class WindowedReduceFilter:
    def __init__(self, binop, window):
        self.state = None
        self.window = window
        self.buffer = Ringbuffer(window)
        self.binop = binop

    def new_sample(self, x):
        self.buffer.new_sample(x)
        samples = self.buffer.get_samples()
        state = reduce(self.binop, samples)
        return state
Ejemplo n.º 5
0
class WindowedReduceFilter:
    def __init__(self, binop, window):
        self.state = None
        self.window = window
        self.buffer = Ringbuffer(window)
        self.binop = binop
        
    def new_sample(self, x):
        self.buffer.new_sample(x)
        samples = self.buffer.get_samples()
        state = reduce(self.binop, samples)
        return state
Ejemplo n.º 6
0
class WindowedAverage:
    def __init__(self, window):
        if have_numpy:
            self.window = numpy.array(window)
        else:
            self.window = list(window)

        self.buffer = Ringbuffer(len(window))

    def new_sample(self, x):
        self.buffer.new_sample(x)

        if have_numpy:
            avg = numpy.mean(self.buffer.get_samples() * self.window)
        else:
            i = 0
            sum = 0
            for s in self.buffer.get_samples():
                sum += self.window[i] * s
                i = i + 1

            avg = sum / len(self.window)

        return avg
Ejemplo n.º 7
0
class Median:
    def __init__(self, window):
        self.window = window
        self.buffer = Ringbuffer(window)

    def new_sample(self, x):
        self.buffer.new_sample(x)
        b = list(self.buffer.get_samples())
        b.sort()
        lb = len(b)
        # even case
        if lb % 2 == 0:
            return b[len(b) / 2] + b[len(b) / 2 + 1]
        else:
            # odd case
            return b[len(b + 1) / 2]
Ejemplo n.º 8
0
class Median:
    def __init__(self, window):
        self.window = window
        self.buffer = Ringbuffer(window)                               
        
    def new_sample(self, x):
        self.buffer.new_sample(x)
        b = list(self.buffer.get_samples())
        b.sort()
        lb = len(b)
        # even case
        if lb%2==0:        
            return b[len(b)/2]+b[len(b)/2+1]
        else:      
        # odd case
            return b[len(b+1)/2]