diff options
-rw-r--r-- | gr-blocks/lib/peak_detector2_fb_impl.cc | 3 | ||||
-rw-r--r-- | gr-blocks/python/blocks/qa_peak_detector2.py | 26 |
2 files changed, 28 insertions, 1 deletions
diff --git a/gr-blocks/lib/peak_detector2_fb_impl.cc b/gr-blocks/lib/peak_detector2_fb_impl.cc index 3d2b68b520..b95fdd381c 100644 --- a/gr-blocks/lib/peak_detector2_fb_impl.cc +++ b/gr-blocks/lib/peak_detector2_fb_impl.cc @@ -88,7 +88,8 @@ int peak_detector2_fb_impl::work(int noutput_items, sigout[i] = d_avg; if (iptr[i] > d_avg * (1.0f + d_threshold_factor_rise)) { d_found = true; - d_peak_val = std::numeric_limits<float>::min(); + d_peak_val = iptr[i]; + d_peak_ind = i; set_output_multiple(d_look_ahead); return i + 1; } diff --git a/gr-blocks/python/blocks/qa_peak_detector2.py b/gr-blocks/python/blocks/qa_peak_detector2.py index ff6323bb0e..d31b8ad146 100644 --- a/gr-blocks/python/blocks/qa_peak_detector2.py +++ b/gr-blocks/python/blocks/qa_peak_detector2.py @@ -115,6 +115,32 @@ class test_peak_detector2(gr_unittest.TestCase): # only part of the expected_result self.assertEqual(expected_result[0:len(dst_data)], dst_data) + def test_peak5(self): + #print "\n\nTEST 5" + tb = self.tb + + data = [0, 1, 3, 7, 5, 2, 1, 0] + alpha = 0.1 + expected_result_peak = [0, 0, 0, 1, 0, 0, 0, 0] + expected_result_average = [0] + for i in data: + expected_result_average.append(expected_result_average[-1] * (1 - alpha) + i * alpha) + + src = blocks.vector_source_f(data, False) + regen = blocks.peak_detector2_fb(3.0, 2, alpha) + dst = blocks.vector_sink_b() + avg = blocks.vector_sink_f() + + tb.connect(src, regen) + tb.connect((regen, 0), dst) + tb.connect((regen, 1), avg) + tb.run() + + dst_data = dst.data() + dst_avg = avg.data() + + self.assertEqual(tuple(expected_result_peak), dst_data) + self.assertFloatTuplesAlmostEqual(tuple(expected_result_average[1:]), dst_avg) if __name__ == '__main__': gr_unittest.run(test_peak_detector2) |