Open jurihock opened 1 year ago
Statement:
Two surprising properties of both Figure 1 networks are: 1) although they use recursive complex multiplications the networks are guaranteed stable, and 2) the networks compute sliding DFT samples without a comb delay-line section required by traditional sliding DFT networks!
Comment:
I have no experience in OFDM processing, but if your OFDM processing requires you to compute all N output spectral samples of an N-point DFT in real time then one of the networks in this blog’s Figure 1 should achieve your goal. If your OFDM processing requires you to compute, say 8, real time N-point DFT spectral samples (where N is greater than 8) then you merely need to implement 8 sliding DFT networks. That is, one comb section driving 8 separate resonator sections.
Would be a great opportunity to ask Rick about a logarithmic frequency resolution extension on April 1...
Summary of findings:
My conclusions so far:
Thoughts:
The oSDFT2 is somehow faster than mSDFT (it's hard to verify it in python). On the other side, it seems to produce an artefact in the analysis.py
example right at the beginning of the sequence. But except of this area, the estimated spectrogram looks pretty decent (no idea what's about the phase).
The C++ kSDFT implementation seems to be nearly as fast as the current mSDFT.
Benchmark:
analysis.cpp
Measurements:
mSDFT ➡ 0.14s
kSDFT ➡ 0.12s
It's true, the kSDFT has less mults, but more adds and a larger delay line.
Also the kSDFT seems to produce strange artefacts, which I did not observe in mSDFT. Maybe there is still a twiddle computation bug, but the benchmark measurements should be correct.
Benchmark:
analysis.cpp
Measurements:
mSDFT ➡ 0.14s
oSDFT2 ➡ 0.09s
Probably I'll keep both mSDFT (as default implementation) and oSDFT2 (C++ only)...
Recent blog post by Rick introduces A Fast Guaranteed-Stable Sliding DFT Algorithm.
Where reference [3] is the mSDFT.
Conclusion:
k
and odd k+1
bins cannot be stitch together as is (unless there is a special window function to smooth the alternating bins)k
and odd k+1
bins does not provide a higher frequency resolution while reducing the comb delay line length at the same time (unless there is a special window function to virtually shrink the mainlobe's null-to-null width or something)See also fast_sdft_response.py
kSDFT