decrease = sum((a[1:] - a [0]) / k[1:]) / sum(a[1:])
assert_almost_equal (decrease, o(c), decimal = 5)
+ def get_rolloff (self, a):
+ cumsum = .95*sum(a*a)
+ i = 0; rollsum = 0
+ while rollsum < cumsum:
+ rollsum += a[i]*a[i]
+ i+=1
+ rolloff = max (0, i - 1)
+ return rolloff
+
def test_rolloff(self):
o = specdesc("rolloff")
c = cvec()
assert_equal( 0., o(c))
a = arange(c.length * 2, 0, -2, dtype=float_type)
c.norm = a
- cumsum = .95*sum(a*a)
- i = 0; rollsum = 0
- while rollsum < cumsum:
- rollsum += a[i]*a[i]
- i+=1
- rolloff = i
+ rolloff = self.get_rolloff (a)
+ assert_equal (rolloff, o(c))
+
+ def test_rolloff2(self):
+ o = specdesc("rolloff", 8)
+ c = cvec(8)
+ assert_equal( 0., o(c))
+ a = zeros(c.length, dtype=float_type)
+ a[-1] = 1
+ c.norm = a
+ rolloff = self.get_rolloff (a)
+ assert_equal (rolloff, o(c))
+
+ def test_rolloff3(self):
+ o = specdesc("rolloff", 8)
+ c = cvec(8)
+ assert_equal( 0., o(c))
+ a = zeros(c.length, dtype=float_type)
+ a[0] = 1
+ c.norm = a
+ rolloff = self.get_rolloff (a)
assert_equal (rolloff, o(c))
class aubio_specdesc_wrong(TestCase):