commit-gnuradio
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Commit-gnuradio] r3648 - gnuradio/branches/developers/trondeau/digital-


From: trondeau
Subject: [Commit-gnuradio] r3648 - gnuradio/branches/developers/trondeau/digital-wip2/gnuradio-core/src/lib/general
Date: Mon, 25 Sep 2006 17:46:54 -0600 (MDT)

Author: trondeau
Date: 2006-09-25 17:46:54 -0600 (Mon, 25 Sep 2006)
New Revision: 3648

Modified:
   
gnuradio/branches/developers/trondeau/digital-wip2/gnuradio-core/src/lib/general/gr_agc_log_cc.cc
Log:
updated log agc with better accumulator

Modified: 
gnuradio/branches/developers/trondeau/digital-wip2/gnuradio-core/src/lib/general/gr_agc_log_cc.cc
===================================================================
--- 
gnuradio/branches/developers/trondeau/digital-wip2/gnuradio-core/src/lib/general/gr_agc_log_cc.cc
   2006-09-25 23:03:46 UTC (rev 3647)
+++ 
gnuradio/branches/developers/trondeau/digital-wip2/gnuradio-core/src/lib/general/gr_agc_log_cc.cc
   2006-09-25 23:46:54 UTC (rev 3648)
@@ -38,10 +38,9 @@
   : gr_sync_block ("gr_agc_log_cc",
                   gr_make_io_signature (1, 1, sizeof (gr_complex)),
                   gr_make_io_signature (1, 2, sizeof (gr_complex))),
-    d_gain(gain), d_reference(reference), d_limit(limit),
+    d_gain(gain), d_reference(log2(reference)), d_limit(limit),
     d_v1(0), d_vx(10), d_loop_gain(1)
 {
-  fprintf(stdout, "reference = %f \t gain = %f\n", d_reference, d_gain);
   set_history(2);
 }
 
@@ -65,7 +64,6 @@
   gr_complex *err = (gr_complex *) output_items[1];
 
   float mag=0;
-  float alpha = 0.001;
 
   bool write_err = output_items.size() >= 2;
 
@@ -75,18 +73,17 @@
     mag = sqrt_mag_squared(out[i]);
     if(mag == 0)
       mag = 1e-5;
-    d_v1 = -log10(mag) + d_reference;
-    d_v1 = (d_gain * d_v1);
+    d_v1 = (d_reference - log2(mag));
+    d_vx += d_gain * d_v1;
 
-    d_vx = (alpha*d_v1) + (1-alpha)*d_vx;
-    
-    d_loop_gain = pow(10, d_vx);
+    d_loop_gain = pow(2, d_vx);
     if((d_limit > 0.0) && (d_loop_gain > d_limit)) {
       d_loop_gain = d_limit;
     }
     
-    if(write_err)
-      err[i] = gr_complex(-log10(mag), d_loop_gain);
+    if(write_err) {
+      err[i] = gr_complex(d_vx, d_loop_gain);
+    }
   }
   return noutput_items;
 }





reply via email to

[Prev in Thread] Current Thread [Next in Thread]