傅里葉:有關FFT,DFT與蝴蝶操作(轉 重要!!!!重要!!!!真的很重要!!!!)


轉載地址:http://blog.renren.com/share/408963653/15068964503(作者 :  徐可揚)

 

其實我感覺這個學期算法最難最搞不懂的絕對不是動態規划啊!絕對是快速傅里葉變換啊!最近才弄懂有木有。

有不少人問我,於是干脆就寫成日志吧。

首先明確一下基本概念吧,就三點,DFT,FFT,蝴蝶操作。

DFT(離散傅里葉變換):書上寫的最清楚的一句話叫做,向量y=(y0,y1,……yn-1)是系數向量a=(a0,a1,,……,an-1)的離散傅里葉變換,也寫作y=DFTn(a)。說白了,就是求n個y值,但是n個自變量x的取值很特殊

 

 

 FFT(快速傅里葉變換):這個名詞好理解,就是很快地算出這n個y值。一般我們計算n個n次的多項式值需要O(n^2)的時間。現在用FFT可以減少到O(n*logn)。具體原理一兩句話說不完……要考的話也太理論性了…

 

  蝴蝶操作:這個應該是讓大家最費解的…他就是一個FFT得實際應用…因為這是實踐的東西所以要掌握。書上有一個圖,雖然感覺看書不一定看的怎么懂,但是這個圖還是要記住。不過我覺得從下往上寫看起來更舒服。

   

 

轉過來以后,向左邊是加,向右邊是減。謹記啊!

突然發現好難解釋,先把宋老師課件里面上次坑爹的沒有答案的課后練習拿來看看。

我這里a0,a1,a2……就不調換順序了,其實是一樣的,格式不同罷了。

a=(0,1)

 

 

經過FFT,Y=(1,-1),這個就是書上最簡單的應用了。

 

再來一個簡單的 a=(1,0).

y=(1,1).

 

我覺得要考試一般就是考四個的吧,兩個太簡單了,8個的太復雜了(我后面有寫)

例子

a=(1,1,0,1)

 

y=(3,1,-1,1)  注意算出來是 y0,y2,y1,y3的順序。

 

a=(0,1,2,3)

 

y=(6,-2-2i,  -2 , -2+2i).

注意右上角的蝶形運算中的旋轉因子變成了(恩!?怎么不能插公式啊!)w(1/4)=i。。。那是因為在a0,a2的蝶形運算中我們多乘了(n/2),這里n=2.(這個我解釋不來…不過這個數是固定的,背就行了)。

 

那我上個八個的,有點復雜,估計可能不會考

a=(0,1,2,3,4,5,6,7).

 

y的順序如圖

 

告訴大家一個比較好的辦法判斷是否算對了,直接人肉使用O(n^2)算法就好了,舉四個的例子。就是把x得值帶入多項式y=a3*x^3+a2*x^2+a1*x+a0算出y值什么的。x0=1,x1=i,x2=-1,x3=-i帶入。這樣的話,其實考察算沒算對完全是個偽命題嗎……

再提醒一次,左加右減哦!

最后再說一下這玩意有什么用,什么信號學的廢話就不說了。無非是FFT用N*LogN時間算出點值方便用點值法算出多項式乘法的系數結果,這個大家看書上510的圖我覺得就能理解了。插值神馬的,背公式吧……雖然我也不記得了。

時間有點緊迫,感覺寫的巨爛無比,大神們如果發現寫錯了留言給我立馬改,關鍵不要誤人子弟……

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM