zoukankan      html  css  js  c++  java
  • 用EXCEL做快速傅立葉轉換_FFT in Excel

    转载来自:http://yufan-fansbook.blogspot.tw/2013/09/excel-fft-fast-fourier-transform02.html

    [Excel]-用EXCEL做快速傅立葉轉換_FFT in Excel(Fast Fourier Transform in Excel)_02

     
    [Excel]-用EXCEL做快速傅立葉轉換_FFT in Excel(Fast Fourier Transform in Excel)_02


    第二步:建立想要做快速傅立葉分析的信號
           在此舉一個週期為0.2秒(即頻率為5Hz)COS波為例,在B2,C2分別填上sample rate及40,這代表作快速傅立葉分析時的取樣頻率。在B3,C3分別填上number of sample及32,這代表在做快速傅立葉分析的過程中,總共將取32個取樣點,這裡要特別注意,在excel中的快速傅利葉分析功能中,取樣點數必須要 為2的整數次方,這就是說要利用Excel作快速傅立葉轉換時的取樣點數必須為2, 4, 8, 16, 32, 64, 128, 256, 1024, 2048, 4096,而且在MS Excel中最多只能分析4096個離散數值的快速傅立葉轉換。在B4,C4分別填上sampling time step及0.025,這代表兩個取樣點中間的時間差,其實也就是sample rate的倒數,或者在C4填上公式“=1/C2”。在B5填上delta frequency及在C5填上公式=C2/C3,這代表了快速傅立葉轉換的解析頻率,也等於取樣率/取樣點。 如圖1所示。

    圖1

    在D8,E8,F8分別填上sample,time及signal,sample為取樣點,D9到D42分別為1到32。time為取樣的時間點從第0秒到第0.31秒。signal則為COS,可在此填上公 式"=COS(2*PI()*$C$5*E9)",在下拉至F40,則可完成此COS波,如圖2所示即為依由離散數值所組成之COS波型。
    圖2
     



           然後在G8,H8,I8,J8中分別填上fft, amplitude, freq index, frequency,如圖3所示。
    圖3

     

    第三步:對信號作快速傅立葉分析
           接著就可以進行快速傅立葉轉換了,點選“資料分析”之後會出現各種分析工具,然後點選“傅立葉分析”,如圖4所示。
    圖4
     



           點選確定之後,會出現如圖5的對話框,在輸入範圍中輸入F9~F40,在輸出範圍中輸入G9~G40,然後按確定。 
    圖5
     
            
    等程式運算完就會在fft那一欄之中輸出運算結果,如圖6。這些運算值為複數形式。amplitude中的H29中,輸入公式“=IMABS(G9)”,然後再往下複製此公式至H40。“IMABS”會計算複數的絕對值,此絕對值即為快速傅立葉轉換後之振福。在J9中輸入公式“=0*$C$6”,以下J10公式則為“=1*$C$6”,並往下複製到J40。此欄便成為以C5(delta frequency)為公差之等差級數,這是代表快速傅立葉運算中的頻率遞增。 
    圖6

     

      
    圖7

     


    第四步:繪圖
           然後以J9~J40為橫軸,以H9~H40為縱軸作一散佈圖,如圖8及圖9。       
    圖8

     

             
           由圖9,可以看出在頻率軸上有兩根頻率,其實以傅立葉轉換來說,實際可用的頻率為取樣頻率的一半,以此例來說就是20MHz。修改一下橫軸範圍至20MHz,如圖10。如此一來我們就完成了在Excel中計算快速傅立葉轉換的方法了。
    圖9
     


    圖10
     


           以數學計算來說,我們所舉頻率為5Hz的正弦波的例子中,經複立葉轉換後應該只會有一種頻率成分的信號,也就是在頻域中只會有一個5Hz的信號存在,即cos波的傅立葉轉換應該為一peak,在圖10看來,信號不是這麼純(pure),並不是完全的peak,那是因為我們取樣的點數不夠所致,可以增加取樣點數來增加精準度。有關要如何增加快速傅立葉轉換的精準度,將在下次再做討論。



           圖11為這次所完成的快速傅立葉轉換。 
    圖11

     
  • 相关阅读:
    游戏开发挑战中心规划(16)
    游戏开发关卡设计(16)
    借鉴来的面试经验
    Scrapy:学习笔记(2)——Scrapy项目
    Scrapy:学习笔记(1)——XPath
    Django:学习笔记(8)——文件上传
    And Design:拓荒笔记——Form表单
    React:快速上手(7)——使用中间件实现异步操作
    JavaScript:学习笔记(9)——Promise对象
    JavaScript:学习笔记(8)——对象扩展运算符
  • 原文地址:https://www.cnblogs.com/lize19940412/p/6756736.html
Copyright © 2011-2022 走看看