1

I have seen many illustrations on the topic of FFT. I've seen a basic difference between DIT and DIF, however even with DIT alone, with the same sample size I've seen few versions with different twiddle factors, some with and some without multiplying by -1 and I wonder what's the valid way to do Radix 2 DIT FFT.

Here's a DIT FFT of 8 points: https://www.researchgate.net/figure/Radix-2-FFT-butterfly-for-size-N-8-The-constants-powers-of-W-and-1-multiply-the_fig1_228543443

Here's another one but without initially multiplying by 0th twiddle factor: https://chegg-html-solutions.s3.amazonaws.com/9780133506471/11600-12-20P-i3.png

And here's even more different one: http://www.ccm.ece.vt.edu:8088/twiki/pub/Main/FFTonECXI/8pt_fft.png

How can those algorithm provide a result that matches with normal DFT if every one of them is different?

Sorry if It's a dumb question but I'm really trying to get my head around the concept of FFT and implement it in code.

GPlayer
  • 131
  • 1
  • 7
  • 3
    Different people define the DFT differently. Some algorithms compute the DFT between k=-N/2 and N/2-1, others (most) between k=0 and N-1. There are at least 3 different normalization conventions that I know of. But the are all doing the same thing in the end, and as long as you know which conventions are being followed, you can convert any DFT result in the format you need. – Cris Luengo Jun 02 '19 at 17:38
  • 1
    Don't reinvent the wheel. There's next to no chance that your own implementation will be as fast or numerically stable as a tried and trusted one like e.g. FFTW. The answer to your question boils down to the elements of symmetry in Fourier transforms and the different ways in which they can be exploited to maximise efficiency. – meowgoesthedog Jun 02 '19 at 17:58
  • 1
    Note that the 0th twiddle factor is equal to 1. A multiplication by 1 can be removed effectively ! – Damien Jun 02 '19 at 19:22
  • 1
    Thanks for answers. By the way, I know my implementation will be "faster than DFT" at most but I don't want to just use FFT, I want to make it and explore that topic. – GPlayer Jun 02 '19 at 19:48

0 Answers0