The Fast Fourier Transform Algorithm

แชร์
ฝัง
  • เผยแพร่เมื่อ 26 พ.ย. 2024

ความคิดเห็น • 132

  • @acatisfinetoo3018
    @acatisfinetoo3018 ปีที่แล้ว +16

    This video is 10 years old and is still the most complete and concise video on the subject 💯

  • @sub-harmonik
    @sub-harmonik 10 ปีที่แล้ว +26

    5:30 to skip review of big-O and DFT stuff, good video thanks

  • @vinsavi
    @vinsavi 7 ปีที่แล้ว +1

    Best clear cut explanation , this video helps to jump from FT to FFT and understand the computational efficiency.
    Come with some prep study of FT and do an actual calculation in excel then come here and you are done!

  • @TimSweet
    @TimSweet 11 ปีที่แล้ว +6

    Awesome video thank you! Explained in ten minutes what I couldn't understand my professor was trying to say in three hours.

  • @sz7063
    @sz7063 6 ปีที่แล้ว +18

    Thank you so much!! So clear!! I read the book, resulting in feeling hopeless, and your explanation just lightens up my world. ^_^ Thanks again!

  • @ZatoichiRCS
    @ZatoichiRCS 11 หลายเดือนก่อน +1

    This video had so much potential but glossed over so so much.

  • @tim_arterbury
    @tim_arterbury 8 ปีที่แล้ว +14

    Super helpful! I'm trying to make an audio spectrum analyzer. This has gotten me closer to understanding the concept, thanks!

    • @tharakaratnayake
      @tharakaratnayake 5 ปีที่แล้ว +1

      did you build it ? can you share the circuit diagram?

    • @CanaDan
      @CanaDan 2 ปีที่แล้ว +2

      me too. iv been looking around kinda everwhere for good information on how this all works and how to calculate audio into something viewable

    • @tim_arterbury
      @tim_arterbury 2 ปีที่แล้ว +1

      @@CanaDan One tricky bit I’ve learned recently. You will want to skew the visualization horizontally towards the right. For audio, the FFT contains a ton of detailed high frequency information so if you just visualize the FFT as is, it is hard to see the bass/miss areas. You want to skew the visualization to emphasize the bass and mid regions for regular viewing as you might see in a spectrum analyzer in your DAW

  • @prateek6502-y4p
    @prateek6502-y4p 4 ปีที่แล้ว +7

    Feel bad for Mr. Gauss

  • @allsignalprocessing
    @allsignalprocessing  11 ปีที่แล้ว +16

    Yes, good catch. x[8] should not be on slide 4 at 10:04, but it should be x[0] x[2] x[4] x[6] as Colo Ricatti pointed out. Somehow I skipped x[4] when counting.

    • @lad4694
      @lad4694 3 ปีที่แล้ว

      Spent 20 mins trying to figure if there was something I'd missed lol. Will come back to the comments more often in the future

  • @allsignalprocessing
    @allsignalprocessing  11 ปีที่แล้ว +2

    no, at 11:10 it is just splitting even and odd index terms (splitting N = 8 DFT into 2 DFTs of N = 4). The full bit reversal (x(0) x(4) x(2) x(6) ) occurs after three stages of splitting - see 15:08

  • @stevenz995
    @stevenz995 9 ปีที่แล้ว +29

    Finally someone explains FFT that people can understand!!!!

    • @nanwu4733
      @nanwu4733 9 ปีที่แล้ว +2

      哪来的8啊

    • @stevenz995
      @stevenz995 9 ปีที่แล้ว +1

      Nan Wu 诶。。。 你怎么也看这个了

    • @stevenz995
      @stevenz995 9 ปีที่แล้ว +1

      Nan Wu 什么8?

    • @nanwu4733
      @nanwu4733 9 ปีที่แล้ว +1

      Steven Z 就扫了一眼封面就看到了x[8]

    • @ioptomato
      @ioptomato 7 ปีที่แล้ว

      真的是眼力很好啊!

  • @nbro5529
    @nbro5529 5 ปีที่แล้ว +4

    At minute 6:21, you start explaining the idea behind the FFT algorithm, that is, that you split the original sequence into two subsequences. However, in that expression, you use W_N^{kr} in the addends instead of W_N^{kn}. I think you used r here because in the next slide you use r in order to define the index, but, at this point, you have not yet defined r.

  • @Tunatunatun
    @Tunatunatun 10 ปีที่แล้ว +76

    At 12:00, shouldn't the first left numbers be 0, 2, 4 and 6?

  • @trendytrenessh462
    @trendytrenessh462 2 ปีที่แล้ว

    Somebody please get this guy a raise

  • @bachkhoa1975
    @bachkhoa1975 5 หลายเดือนก่อน

    This is a good overview of FFT. It would be nice to explain how the DFT convolution sum is derived. Also, the de-interlacing of the inputs was glossed over (not explained clearly) but only the reversed binary notation was mentioned (this is just an after-the-fact observation of How, not an explanation of Why). Readers who dive deeper into the splitting of a larger N-point FFT into two smaller N/2-point FFT’s, or understand the relationships between the twiddle factors (and their periodic nature) would understand and retain better the FFT technique (and be able to conquer any arbitrary size of N-point FFT (N being a power of 2, of course).

  • @gynxrm2237
    @gynxrm2237 9 หลายเดือนก่อน

    the best i have watched so far..

  • @Cyranek
    @Cyranek 5 ปีที่แล้ว +3

    fuck me this is hard

  • @bbrealey
    @bbrealey 7 ปีที่แล้ว +2

    Thank you, this was super helpful in understanding the transition from DFT to DFFT.

  • @Isti115
    @Isti115 5 ปีที่แล้ว

    At 9:33 you say "x sub zero" and I found that a bit confusing later in the video, when I forgot where it's came for, but now I have realized that it's more like "x sub oh". :)
    Thanks for the great video! It really helped me!

  • @MrPsverma
    @MrPsverma 8 ปีที่แล้ว +6

    all important things at a place!!!

  • @freedomchinaify
    @freedomchinaify 5 ปีที่แล้ว

    I highly suggest going back to second-year advanced calculus textbooks. There're many well-rounded explanations of FFT rather than what we have in DSP textbooks.

  • @dhimanbhowmick9558
    @dhimanbhowmick9558 8 ปีที่แล้ว

    Thank you very very much ,Barry, very nice and deep explanation. Your way of explanation is very good. Thank you so much.

  • @rodericksibelius8472
    @rodericksibelius8472 ปีที่แล้ว

    As an electronics technician of only a 2 year Associate in Science Technology degree in electronics for 37 years, and retired now, who helped engineers design, test breadboard and build / troubleshoot practical low frequency RLC circuits and also at the microwave frequencies for building 'cascaded microwave stripline amplifiers' in the 4 to 30 GHZ range for use in the real world, I had never used Fourier Transforms nor Laplace Transforms, I only used High Tech Oscilloscopes, Spectrum Analyzers, Vector Network Analyzers, SMITH CHARTS, Voltmeters, Ammeters, Frequency counters and computers, and sometimes used ALGEBRA and TRIGONOMETRY to solve electronics circuits problems In the laboratory and in the REAL WORLD,
    I have great RESPECT for the Geniuses of ELECTROMAGNETICS Pioneers, who had derived the mathematical physics of all the basics the we based our technology from: James Clerk Maxwell, Hertz, Gauss, Faraday, Lenz, Oersted, Henry, Steinmetz, Heaviside, Tesla, Weber, and many more, including STEVE WOZNIAC.

  • @Net_Flux
    @Net_Flux 9 หลายเดือนก่อน

    Not sure why you left out the recursive relation between the odd and even functions and the DFT. I was so confused where the speed gain was from.

  • @PikaGMS
    @PikaGMS 9 หลายเดือนก่อน

    i just want to say that i love you man

  • @anonyan9832
    @anonyan9832 5 ปีที่แล้ว +1

    You missed one of the main parts: How to compute X[k+N/2]. So you only take k from 0 to N/2. Based on this, you didn't prove that the asymptotics is 2*(N/2)^2.

  • @allsignalprocessing
    @allsignalprocessing  11 ปีที่แล้ว +2

    Yes, those end up being the twiddle factors - see them in the example diagram for N=8 at 15:14

  • @atulpol93
    @atulpol93 11 ปีที่แล้ว +9

    In butterfly diagram it should be x[4] instead of x[8] ,right?

    • @allsignalprocessing
      @allsignalprocessing  11 ปีที่แล้ว +6

      Yes. There is an annotation at 10:07 that points out the problem, but that may not be visible on your device. I have also uploaded a corrected version of this video to my channel, called The Fast Fourier Transform (FFT) Algorithm (c)

  • @SalokinX
    @SalokinX 4 ปีที่แล้ว

    The complexity calculation for the FFT as you explained in the video is incorrect.
    2 summations of half size of the array will be N(N/2 • 2), which is N^2.
    The benefit of FFT is from the fact that
    W_N^rk = -W_N^r(k-N) when k ≥ N.
    This is due to the symmetric property of the exponential function:
    e^j2π = -e^jπ
    Now you only have to compute the FT for half the array and the other half can be constructed by negating those terms, so you end up with complexity
    N(N/2) for the first split.

  • @Kaiser1234100
    @Kaiser1234100 6 ปีที่แล้ว +1

    How would the butterfly diagram (@ 15:06) change if there were numerous iterations of inputs? For example if N=128 but the 8 channels structure is maintained? Thanks

  • @mudassarshahzad1285
    @mudassarshahzad1285 7 ปีที่แล้ว +3

    i am gonna implement FFT in verilog and previously i was a moderate knowledgeabout FFT but after watching this video get through from this Thanks saving my life :v

  • @hzlin6655
    @hzlin6655 6 ปีที่แล้ว

    there is a lot of interesting points at 13:41. please check that, if it is wrong.

  • @junbozuo6474
    @junbozuo6474 7 ปีที่แล้ว

    Great explanation on Butterfly algorithm!

  • @moazwalead7174
    @moazwalead7174 21 วันที่ผ่านมา

    GREAT THANK YOU , HELPED A LOT

  • @bggbbdg5625
    @bggbbdg5625 4 ปีที่แล้ว

    To calculate the cost in the 13:42. It should be 2(N/2)^2+N/2, the next steps will be similar. So the final cost will be 3/2N+1/2N logN. It is because that the w of the lower half are simply negative of those of the upper half. So the cost should not be counted. Of course under big O notation, the final answer is still O(NlogN). You are really helpful, but there are some minor mistakes.

  • @rafafafayo
    @rafafafayo 11 ปีที่แล้ว +1

    Very cool, but maybe it lacks some schemas to express more the ideas of the simplification.

  • @cyl3477
    @cyl3477 7 ปีที่แล้ว

    I just understood FFT for the first time!

  • @intelligenceservices
    @intelligenceservices 7 ปีที่แล้ว

    where can i learn more about what "k" and "w"(omega) and all these greek symbols mean? i'm studying too many things and it is just hard to remember what they mean.

  • @amanuelamente6214
    @amanuelamente6214 9 ปีที่แล้ว +3

    X[k] = Xe[k] + Wn,k*Xo[k]. Index for X runs from 0 - 7, but that of Xe and Xo runs from 0 - 3. Please reply how to deal with X's when the index runs above 3. (I'm assuming N=8)

    • @zksumon847
      @zksumon847 5 ปีที่แล้ว

      my question too

  • @esrayeniaras9292
    @esrayeniaras9292 4 ปีที่แล้ว

    Excellent explanation. Helped a lot. Thanks!

  • @ser29009
    @ser29009 9 ปีที่แล้ว

    you are my hero .. I think I will use the website too .. thanks

  • @manjumanl222
    @manjumanl222 2 ปีที่แล้ว

    Wan , you're the best .

  • @efraincaballero7482
    @efraincaballero7482 9 ปีที่แล้ว +1

    this is beautiful, thanks man!

  • @chispun2
    @chispun2 5 ปีที่แล้ว +1

    Like si crees que Sergio y compañía no se han visto el vídeo, pero la recomendación ahí queda.

  • @MehrdadAkhavan224
    @MehrdadAkhavan224 4 ปีที่แล้ว

    where is the input X[4] in the block diagram?

  • @sivonparansun
    @sivonparansun 7 ปีที่แล้ว

    This video saved my ass. Thank you Barry

  • @inverse_functor
    @inverse_functor 5 ปีที่แล้ว

    Thank you for sharing your knowledge.

  • @CAIJianping
    @CAIJianping 11 ปีที่แล้ว

    there might be sign errors: -1 should be used for X(k+N/2)

    • @allsignalprocessing
      @allsignalprocessing  11 ปีที่แล้ว

      I'm having a hard time finding the equation you are referring to. Could you give me a time stamp in the video and be a bit more specific? Thanks.

    • @CAIJianping
      @CAIJianping 11 ปีที่แล้ว

      Hi, sorry for the unclear description.There might be a sign error in the example graphs.

    • @lukmackul
      @lukmackul 11 ปีที่แล้ว +10

      CAI Jianping why dont you just give the time in the video when the example graph appears

  • @natebennett8189
    @natebennett8189 7 ปีที่แล้ว

    14:53 he cancels out the N^2/N (=N) saying "for capital N large enough, this term dominates". Someone, please help me, why do you drop the +N?

    • @sarthakj84
      @sarthakj84 6 ปีที่แล้ว

      Awesome explanation. Made it very clear. Thanks

  • @llewgibson
    @llewgibson 6 ปีที่แล้ว

    I seen your channel mate, really love the content. Subscribed straight away, We should connect!

  • @cyl3477
    @cyl3477 7 ปีที่แล้ว

    Really good video!!! Clearly explained!!! thankyou!

  • @mattanova
    @mattanova 2 ปีที่แล้ว

    perfect explanation, thank you !

  • @clo7473
    @clo7473 3 ปีที่แล้ว

    @1:21 it should be N complex multiplies and N complex adds (not N-1) ... there are as many multiplies as there are adds

  • @binchyster
    @binchyster 11 ปีที่แล้ว

    Very good thank you! Nice and clear and well explained.

  • @philphil7551
    @philphil7551 7 ปีที่แล้ว

    ist there an advantage of bit reversed positioning ?

  • @goku5591
    @goku5591 5 ปีที่แล้ว

    well done brother

  • @_white.rabbit_
    @_white.rabbit_ 7 ปีที่แล้ว

    How do you choose appropriate W values ?

  • @shahdokaOfEgypt
    @shahdokaOfEgypt 6 ปีที่แล้ว

    Great video! Thanks

  • @Jsmith32t
    @Jsmith32t 11 ปีที่แล้ว

    When you pull the WN^k term out at 7:55, is that term known as the twiddle coefficient?

  • @philphil7551
    @philphil7551 7 ปีที่แล้ว

    sorry i dont get it... first example N = 8.... second example N = 8 again but more stages... help pls

  • @bridgeasparagus5437
    @bridgeasparagus5437 4 ปีที่แล้ว

    where's all the cosines and sines in the equations?

  • @Irwat808
    @Irwat808 11 ปีที่แล้ว

    There shouldn't be an x[8] term, right? Because then N would be 9?

  • @seeva92
    @seeva92 8 ปีที่แล้ว

    How it is n = 2r for even and n = 2r+1 for odd.. Can you explain please?.. Lets say if n = 8, for even -> n=2r -> 2*4 = 8. whereas,
    for odd -> n=2*r+1 => 9

    • @ShuvamNandi
      @ShuvamNandi 8 ปีที่แล้ว

      Let us take the case that N is 8, the samples are numbered X[0], X[1], X[2], ... till X[7]. By dividing them into even and odd samples, X[0], X[2], X[4], and X[6] are grouped together, and X[1], X[3], X[5], and X[7] are grouped together. The value of r ranges from 0 to N/2 - 1. Thus, We can say that r is in the range of 0 to 3 (N/2 - 1 = 8/2 - 1 = 4 -1 = 3), making 2r and 2r+1 fall in the same range as well. Hope this makes things clear :)

  • @MPaulHolmesMPH
    @MPaulHolmesMPH 10 ปีที่แล้ว

    Great video. Thank you.

  • @marceloricatti6017
    @marceloricatti6017 11 ปีที่แล้ว +1

    10:08 its x[0] x[2] x[4] x[6]

  • @SidsArt
    @SidsArt 8 ปีที่แล้ว

    Thanks a lot Sir.. You are awesome! ;-)

  • @zhanjizhu5345
    @zhanjizhu5345 2 ปีที่แล้ว

    what will it be if N = 30 ?

  • @shivamjalotra7919
    @shivamjalotra7919 5 ปีที่แล้ว

    Thankyou for the video, its great

  • @wanglin406
    @wanglin406 7 ปีที่แล้ว

    Could somebody explains what if the signal is 10 points sampled(which is not 2^N), please?

  • @varunnegi7202
    @varunnegi7202 10 ปีที่แล้ว

    just what i wanted..thanx a lot :)

  • @marcvandijken7442
    @marcvandijken7442 8 ปีที่แล้ว

    I don't know if you ever check comments for this particulair video since it's been a while since you've uploaded it, but I have a question: how do you get O(((N^2)/2)+N)? I know you explained it in the video (at around 12:00), but I don't understand it. Thanks in advance!

  • @mdorghammm
    @mdorghammm 8 ปีที่แล้ว

    Great video

  • @ajayagarwal3200
    @ajayagarwal3200 9 ปีที่แล้ว

    beautifully explained (y)

  • @likhithareddy5384
    @likhithareddy5384 6 ปีที่แล้ว

    Linear filtering methods based on dft problems

  • @LizaCharalambous
    @LizaCharalambous 10 ปีที่แล้ว +2

    Thanks a lot that was really helpful. Great Job :)

  • @harshavardhanasrinivasan3125
    @harshavardhanasrinivasan3125 8 ปีที่แล้ว +1

    While solving decimation in time and frequency algorithm of fft we used only DFT why not IDFT sir.

  • @fadlylado
    @fadlylado 10 ปีที่แล้ว +1

    Thanks a lot...

  • @cassandriel
    @cassandriel 7 ปีที่แล้ว

    Is that the power of j or i?

    • @kurianbinu3383
      @kurianbinu3383 4 ปีที่แล้ว

      If you are electrical engineer like me, we use j

  • @AaaRrrLllUS
    @AaaRrrLllUS 10 ปีที่แล้ว

    Thanks a ton.!!!

  • @krutarthpatel9283
    @krutarthpatel9283 6 ปีที่แล้ว +1

    Good one

  • @augustodutra3839
    @augustodutra3839 3 ปีที่แล้ว

    I just read the fast and fourious transform.

  • @rajatmalhotra4633
    @rajatmalhotra4633 8 ปีที่แล้ว

    awesome

  • @chemistrywaalla
    @chemistrywaalla 7 ปีที่แล้ว

    Its awesome :)) !..

  • @lwwm192
    @lwwm192 10 ปีที่แล้ว

    very nice

  • @dr.m.senthilkumar6279
    @dr.m.senthilkumar6279 10 ปีที่แล้ว

    really good n useful

  • @taylorklitschko8546
    @taylorklitschko8546 11 ปีที่แล้ว

    Can anyone make a subtitle :目?

  • @ahmedalmoola8191
    @ahmedalmoola8191 2 ปีที่แล้ว

    Good video but the ads are very distracting. if your intention to help, minimize or remove the ads. thumb down.

  • @ЧолакКостянтин
    @ЧолакКостянтин 10 ปีที่แล้ว

    what is "j" ????

  • @NisargJain
    @NisargJain 6 ปีที่แล้ว +2

    15:07 muck fe

  • @raymondzhao9557
    @raymondzhao9557 2 ปีที่แล้ว

    interesting!

  • @jannastevens4086
    @jannastevens4086 6 ปีที่แล้ว

    well mama what about how well we are doing in skewl... the Kids

  • @TheCaitlinlopez
    @TheCaitlinlopez 10 ปีที่แล้ว

    Sorry but gauss was not, Fourier was

  • @성혁윤-c1c
    @성혁윤-c1c 7 หลายเดือนก่อน

    15:33 ♡♡

  • @sifsif2725
    @sifsif2725 3 ปีที่แล้ว +1

    LMAO imagine waiting 31 years for your image to be processed xD

  • @الاستاذالمساعدعماداحمدالمشهدان

    هاذه صورت بابا اني هبه احبك هواي انته وعالتك اني حبكم هواي باي

  • @СултанмуратКетебаев-о5г
    @СултанмуратКетебаев-о5г 10 ปีที่แล้ว

    Ffg

  • @xavieraxiak6866
    @xavieraxiak6866 ปีที่แล้ว

    Crap audio.