I'm looking to utilise pruned DFTs.
I can't get my head around FFTW's example - they don't have any DFT pruning utilities in the library, so you have to code your own.
In general, how does it work? If I have to code it, I have to understand it in the first place.
Is the real-to-complex DFT an example of pruning (in both directions)? You could say the input are pruned (only the real component is non-zero) and the output is pruned (only the second half is returned).
I'm wanting to similarly prune both the input and output of the transformation, in bands. The output band of results I'm interested in will remain the same. The input band that I'm interested in will be dynamic.
My application works without pruning but a lot of my inputs are 0 - as well, I don't need all of the outputs; so, I feel I can achieve serious performance benefits coming from pruning.
I came across a paper on Spiral DFT where they showcase good pruned DFT performance. Is there a particular library that provides the best pruned / general DFT performance?
FFTW says that you can get O(nlog(k))
by pruning outputs - where k
is the amount of output interested in; this only addresses the pruning of the output. In general, what performance can I expect from the state of the art (even if it's not open source) for both pruned inputs and outputs?
Does pruning have to be in a contiguous band, or can I select arbitrary bins to prune?