Hi John,
good news, everyone!
I've added a "vector mode moving average" [1], and if you want to, you
could test it (I'd like the feedback, actually). Idea would basically be
file source (vlen=fftlen)->fft->complex to mag²(vlen)->moving
average(length,vlen)->keep 1 in n(length,vlen)->vector to stream->Qt
raster sink
Best regards,
Marcus
[1] https://github.com/gnuradio/gnuradio/pull/1462
On 09/05/2017 04:41 PM, Marcus Müller wrote:
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
Discuss-gnuradio@gnu.org
https://lists.gnu.org/mailman/listinfo/discuss-gnuradio
_______________________________________________
Discuss-gnuradio mailing list
Discuss-gnuradio@gnu.org
https://lists.gnu.org/mailman/listinfo/discuss-gnuradio
_______________________________________________
Discuss-gnuradio mailing list
Discuss-gnuradio@gnu.org
https://lists.gnu.org/mailman/listinfo/discuss-gnuradio