summaryrefslogtreecommitdiff
path: root/gr-blocks/lib/rms_ff_impl.cc
diff options
context:
space:
mode:
authorTom Rondeau <trondeau@vt.edu>2013-02-21 19:04:22 -0500
committerTom Rondeau <trondeau@vt.edu>2013-02-21 19:04:22 -0500
commit7b4a518bfe47fb1d0b2a32fc5c93ed0157d2dc6c (patch)
tree89e077fc55e3f1fc160e43fccb2c2128b8be2e26 /gr-blocks/lib/rms_ff_impl.cc
parente7bd4dcbd4ee20923d38ddd02976d9f0516cd347 (diff)
blocks: implementing averaging inside rms blocks.
single_pole_iir_filter lives in gr-filter.
Diffstat (limited to 'gr-blocks/lib/rms_ff_impl.cc')
-rw-r--r--gr-blocks/lib/rms_ff_impl.cc12
1 files changed, 7 insertions, 5 deletions
diff --git a/gr-blocks/lib/rms_ff_impl.cc b/gr-blocks/lib/rms_ff_impl.cc
index 2b8cdc34e7..8e004ad61e 100644
--- a/gr-blocks/lib/rms_ff_impl.cc
+++ b/gr-blocks/lib/rms_ff_impl.cc
@@ -41,9 +41,9 @@ namespace gr {
rms_ff_impl::rms_ff_impl(double alpha)
: gr_sync_block("rms_ff",
gr_make_io_signature(1, 1, sizeof(float)),
- gr_make_io_signature(1, 1, sizeof(float))),
- d_iir(alpha)
+ gr_make_io_signature(1, 1, sizeof(float)))
{
+ set_alpha(alpha);
}
rms_ff_impl::~rms_ff_impl()
@@ -53,7 +53,9 @@ namespace gr {
void
rms_ff_impl::set_alpha(double alpha)
{
- d_iir.set_taps(alpha);
+ d_alpha = alpha;
+ d_beta = 1 - d_alpha;
+ d_avg = 0;
}
int
@@ -66,8 +68,8 @@ namespace gr {
for(int i = 0; i < noutput_items; i++) {
double mag_sqrd = in[i]*in[i];
- double f = d_iir.filter(mag_sqrd);
- out[i] = sqrt(f);
+ d_avg = d_beta*d_avg + d_alpha*mag_sqrd;
+ out[i] = sqrt(d_avg);
}
return noutput_items;