example (in weird pseudo):
Code: Select all
M = 16
K = 4
N = M * K (64)
for i = 0 to K
dfts[i] = fft(x[i * M .. (i + 1) * M], M)
full_dft = fft(x[0 .. N], N)
// how to make dfts[0 .. K] == full_dft?
Code: Select all
M = 16
K = 4
N = M * K (64)
for i = 0 to K
dfts[i] = fft(x[i * M .. (i + 1) * M], M)
full_dft = fft(x[0 .. N], N)
// how to make dfts[0 .. K] == full_dft?
Yes, I always dreaded the day where I had to write my own FFT. But perhaps it is time.Miles1981 wrote:Yes, it's actually implementing the last pieces of the FFT algorithm (hopefully).
I haven't done the math, but try to do it by starting from the DFT and use a k-size butterfly. The thing is that the order of the samples you are using for the smaller FFTs may screw you.
Yeah I'm realizing now it isn't as easy as I thought it would be. FFTs utilize recursion by computation of even and odd samples, not N/2 blocks.avasopht wrote:Hmm, but the twiddle factors are dependant on the number of input samples, meaning that the calculations would be different.
Plus the DIF would still require the smaller FFTs to require input samples from received by the other smaller FFTs (check the flow diagrams).
How could that make sense? The result of the FFT is a scalar value of amplitude and phase, not frequency.JCJR wrote:I've wondered if crude mulrirate-- Harmonic 0 of a small fft has everything below harmonic 1. Maybe collect a bunch of harmonic 0 from the little fft's, and fft that array of harmonic 0's for the longer term lower frequencies?
Thanks Camsrcamsr wrote:How could that make sense? The result of the FFT is a scalar value of amplitude and phase, not frequency.JCJR wrote:I've wondered if crude mulrirate-- Harmonic 0 of a small fft has everything below harmonic 1. Maybe collect a bunch of harmonic 0 from the little fft's, and fft that array of harmonic 0's for the longer term lower frequencies?
© KVR Audio, Inc. 2000-2024
Submit: News, Plugins, Hosts & Apps | Advertise @ KVR | Developer Account | About KVR / Contact Us | Privacy Statement