discuss-gnuradio
[Top][All Lists]
Advanced

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

Re: [Discuss-gnuradio] Capturing maximum complex value


From: John Ackermann N8UR
Subject: Re: [Discuss-gnuradio] Capturing maximum complex value
Date: Sun, 17 Mar 2019 15:08:23 -0400
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Thunderbird/60.4.0

On 3/17/19 3:01 PM, Kevin Reid wrote:

One of the AGC blocks that has separate attack and decay rates (agc2_cc or agc3_cc) could be used to do this: set attack to 1, decay to 0, ignore the output, and read (1.0 / agc.gain()) to find the peak-hold magnitude.

In my own application, I am using this chain for peak detection /without/ hold:
     blocks.complex_to_mag_squared(),
    blocks.stream_to_vector(itemsize=gr.sizeof_float, nitems_per_block=window),
     blocks.max_ff(window),
blocks.probe_signal_f()
but you would need to separately poll (at the sample rate divided by the window length) and max-hold this to catch long-term peaks. On the upside, as I just found out, it uses less CPU time than running the AGC (on my processor).

This is where I get myself confused -- to get a magnitude do I need to do an FFT, or can I just look at the raw complex stream, or the output of complex_to_mag_squared without an FFT? I've used something like the blocks you describe to capture the max within each FFT frame, but what I'm looking for now is any instant where I get clipping, no matter how brief.

If the only thing that affects the peak/gain is the recording, perhaps you could measure the peak in the file offline (that is, separately from running your real-time flowgraph) and use that to set the gain, instead of having to interactively monitor anything.

That's an idea.  Thanks!



reply via email to

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