Sunday, April 28, 2024

Rational resample before FFT, and FFT rate

I am reading Digital RF data at 16k samples/second, and my goal is to
get the power of the maximum frequency once per second.

I start by resampling to a power-of-two rate, then translating to move
the desired frequency to the center with further decimation, then doing
an FFT, converting to log power and finally extracting the power of the
loudest bin. The decimation and FFT size are calculated to yield one
FFT per second. I'm not sure if I'm doing this correctly and I've
attached the flowgraph.

(a) Should the FFT use only a power-of-two bin size? I am resampling
to go from 16k to 8192 samples/second so that I ultimately decimate to
512 samples/second rather than 500 samples/second.

Is that the right thing to do? Should I resample up to 16384
samples/second rather than down to 8192? Or should I just use a 500 bin
FFT?

(b) Given that the final sample rate and FFT depth are equal (512), I
expected to get one vector per second, and thus one maximum value per
second. Instead, I see a much slower update rate, about once per five
seconds.

I added a QT vector sink and while that takes a long time to get
started, once going it does update about once per second. Am I doing
something wrong that the maximum value doesn't update with each new vector?

Thanks,
John

No comments:

Post a Comment