summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gr-blocks/lib/peak_detector2_fb_impl.cc3
-rw-r--r--gr-blocks/python/blocks/qa_peak_detector2.py26
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)