discuss-gnuradio
[Top][All Lists]
Advanced

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

Re: [Discuss-gnuradio] Averaging in QT Waterfall


From: Marcus Müller
Subject: Re: [Discuss-gnuradio] Averaging in QT Waterfall
Date: Tue, 5 Sep 2017 16:41:19 +0200
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.2.1

Hi John,

In fact, the waterfall sink does the averaging internally to give you your update rate. Since you don't want the display to update every 1 minute, but actually to aggregate played back data to play back faster, that doesn't help you :(

But: it's actually pretty simple to just implement the averaging yourself:

file source -> stream to vector (vlen = fft size) -> fft (fft size) -> complex to mag² (vlen=fft size) -> integrate (vlen=fft size) -> keep 1 in N (N=averaging time) -> multiply const (1/N) -> QT GUI Time Raster Sink

Obviously, that'll grow with time, because we only sum up input, so we would have to subtract a delayed (by N) version of the integral to get a running sum (moving average). Sadly, the numerical stability of adding mllions of floating point values will not allow us to work with that straight out of the box.

But fear not, solution solving that issue is easy. I'd simply go for implementing a per-vector-element single-tap IIR "pseudoaverage" instead of the integrator; you could of course implement a stable moving average yourself.

Writing that is possible with both python and C++. If you want to go for C++, you can take the gr-blocks/lib/integrate_XX_impl.* as an example. (don't write such a type agnostic thing to generate the actual blocks, though. That's unnecessary here – I'd rather recommend you also integrate the conversion from complex to magnitude squared in that same block, and thus have a fixed [complex]*fft_length input and [float]*fft_length output signature.

Best regards,

Marcus


On 09/05/2017 04:23 PM, John Ackermann N8UR wrote:
I am working with a large and long (8 hour) data set. My goal is to show changes in propagation over time -- in particular, further analysis of my solar eclipse RF captures.

I want to show the whole 8 hours on a the waterfall without scrolling, which means I need to write a line to the display every minute or more (I haven't figured out exactly how many lines the waterfall can display).

The problem is that the data is noisy and displaying one FFT with a long gap before the next one makes it very hard to discern the signal from the noise. What I'd like to do is display an average (or rolling average) of preceding FFTs, not just a snapshot of the most recent one.

The QT Frequency sink allows you to select averaging, but the waterfall sink does not. Is there a way to have the waterfall use averaging? Alternatively, is there a block that will average a vector like an FFT? That's actually probably the best answer for my situation.

Thanks,
John

_______________________________________________
Discuss-gnuradio mailing list
address@hidden
https://lists.gnu.org/mailman/listinfo/discuss-gnuradio




reply via email to

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