2017/11/12

使用Excel進行快速傅立葉轉換

快速傅立葉轉換 (Fast Fourier Transformation,FFT),
一般是大學工程數學會上的內容之一,
但是坦白說,對學生來說,根本不知道會用在哪?
老師如果又沒有用鮮明的例子說明,
後面課程又沒用到的話,
大概就會把FFT忘的一乾二淨,
像我就是...

後來碩班唸固力組,有一門必修是振動學,
因為會提到將時域量測資料轉換到頻率域的資料圖表處理需要用到FFT,
那時候就有留下一個印象:

FFT可以將時域資料轉換到頻率域。

但是因為主要方向在FEM,
所以對FFT的認知也就僅此為止。

後來因為工作上的需求,
需要量測時域資料並轉換到頻率域進行分析,
所以才又開始找FFT的資料與處理的方法,
相信有些朋友的狀況應該跟我很類似,
所以把網路上找到的資料整理跟大家分享心得。

要作FFT通常是因為取得一份時域的量測資料,
一般常見的格式是 (t, A),

t 就是紀錄的時間,sec。

A是記錄到量測值,
例如等一下用來當例子的加速度值,m/sec2

這個資料要從哪邊來?
當然看各位自己有什麼來源,
基本上有手機的幾乎都有這個資料產生的來源,
可以參考另外一篇:使用手機量測線性加速度

要作FFT其實可以不要去想寫程式這一類複雜的事情,
也不要去要買甚麼Matlab之類的數學計算軟體,
可以利用大家熟悉的excel功能來完成。

以下以EXCEL 2010為例。
首先需要先開啟(載入)Excel一項“分析工具箱”功能,步驟如下:

1. 點選:左上角"檔案",選擇下方的"選項",

2. Excel 選項對話視窗中找到 "增益集"這個項目,選擇後按執行。

3. 會跳出"現有的增益集"對話視窗,
建議可以載入 "分析工具箱"、"分析工具箱-VBA"、"規劃求解增益集"這三個,
也可以全選載入。

4. 載入增益集以後,
就會在功能表的"資料"中看到"分析",
如下圖示:


再來是準備資料跟處理,
Excel中的 FFT資料數量必須為2的次方,
例如 32、64、128、256、512、1024、2048、4096。

資料量可以多取,盡量超過1024筆,
最好可以到Excel的極限4096筆資料,
如此一來結果的頻率的解析度會比較高。

取樣頻率看儀器的能力與需求,
對高頻來說,取樣頻率越高越好,才能找到高頻的訊號源。
對低頻震動,可以取低一點的取樣頻率,
否則Excel的資料筆數(4096)會不夠涵蓋完整的週期。

有了記錄時域的資料,
就可以使用“資料”-“分析”-“資料分析”指令,
點選後會出現分析工具選擇對話視窗如下:

從其中找到“傅立葉分析”指令,
點選後按下確定,會跳出對話視窗如下:

對話視窗分成兩個部分:輸入與輸出選項,
輸入部份只需選擇記錄的資料部份,
不需要時間的資料,記得資料數量要是2的次方,
例如2^7=128,選擇或輸入從E6欄位到E133欄位。

輸出的部分例如可以選擇輸出到新的活頁簿、工作表或者是現有工作表的不同欄位,
例如輸出到 F6~F133。

傅立葉分析工具對資料欄位的處理不是即時性的,
所以如果欄位資料有更新,
就必須重新執行一次,以取得新的計算結果。

輸出的資料形式是複數型式 (real + image*i),
所以必需再用IMABS函數取出複數的絕對值,
例如:1+1i,取出來的絕對值相當於 1.414,就是"根號 2"。
若以前述的加速度範例來說,
就是加速度的振幅。

但是要輸出成頻域的圖表時,
還必須計算頻域在圖表X軸向的座標值,
此時就必須要用到資料的時域資料,
例如每隔0.1秒取一次資料,
那取樣頻率就相當於是10 次/秒,
因為取了128筆資料作分析,
所以在圖表X軸上就是10Hz/128=0.078125Hz的頻率解析度。

因為傅立葉分析的特性關係,
資料可以取其中一半來看,
也就是可以看到從 0Hz 到 128/2*0.078125=5Hz 左右的振幅變化。

所以圖表橫軸是0~5Hz,
縱軸是m/sec^2,


從圖表中可以看到特別突起的振幅,
跟對應的頻率值,
從振動的角度來看,
代表在該頻率有一個外部作用力持續提供一個作用力給機構,
使機構在該移動方向獲得一個加速度。

若是使用敲擊方式,那就是測量該位置的自然頻率,振幅值反而是無關緊要。

回過頭來看FFT的一些限制:

(a) 取樣率若是太低,高頻的資料就看不到,所以取樣速率(Sampling rate)須為受測信號最高成分頻率的兩倍或兩倍以上 (Nyquist sampling theorem);例如信號頻率是 1Hz,那取樣速率至少每秒要有2個以上(2Hz的取樣頻率)。

(b) 取樣週期(取樣時間長度)至少要超過一次以上的週期時間長度,才能取得完整的週期變化資料。

(c) 如果受測信號是隨機的,FFT的結果其實就看不到明顯突出的訊號,所以受測信號必須是週期性的,FFT才有意義。

(d) 取樣數須為 2 的次方個資料。

提供Excel連結範例

其他相關參考:
手機在振動量測上的應用
用手機量測在高鐵上的振動
振動量測在設備上的應用
Vibration Analysis, MIDE

 下面是廣告連結...


17 則留言:

  1. 請教一下,找到振幅和頻率,可以怎樣利用它們找到規律呢?

    回覆刪除
    回覆
    1. 頻率是週期的倒數,
      週期就是隨時間變化會重複出現=規律性,
      例如頻率是0.1Hz,週期就是1/0.1=10秒,也就是每是10秒會重複出現一次。

      刪除
  2. 請教K大 如果照您教學的方法對我的case做傅立葉轉換, 發現最後只有在頻率等於0處有最大峰值, 請問這代表什麼意思?, 謝謝K大

    回覆刪除
  3. 如果從機械結構來看FFT後最大峰值會出現在零Hz,
    代表結構至少有一個方向的自由度,
    可以自由移動未受約束,
    但是您的case是何種狀況,
    因為訊息太少我就無法確定。

    回覆刪除
    回覆
    1. 謝謝K大, 詳情可否再私訊於您呢?

      刪除
  4. 您好,
    請利用網頁版頁面右側的留言,
    我對FFT也是一知半解,
    我會盡我所能找合理的解釋提供給您。

    回覆刪除
  5. 有沒有可以觀察方波, 且可以調整方波duty的FFT結果呢?

    回覆刪除
    回覆
    1. 很抱歉,我作FFT主要應用是將量測到的加速度時域資料轉頻域,而且重點放在前幾個低頻。
      像方波這類偏訊號的概念我就不是很清楚您要觀察的重點。

      刪除
  6. 請教K sir依照上面的範例可得出1st mode為(1.56Hz,51.74),2nd mode為(2.42hz,45.22),頻頻誤差不大但振幅似乎差很大,是IMABS含數有問題嗎?

    回覆刪除
    回覆
    1. 我在作完FFT後,其實只看振幅值比較高的頻率是多少,振幅的數值並不會特別去在意,
      在時域實務上加速度會有連續性,可是受到取樣頻率的影響,再轉到橫軸是頻率域,加速度的連續性變化就會不見,以模態"特徵值”的角度來看待不同頻率的振幅“比值”會比較恰當,實際上的數學意義還是需要高手協助解惑。

      刪除
  7. excel檔案連結是???
    煩請提供一下.

    回覆刪除
    回覆
    1. https://drive.google.com/file/d/1hkRnY7rXxBw_xZ_9GGGkAiQK4BBrY4hs/view?usp=drivesdk

      刪除
  8. 謝謝你的文章 原來EXCEL可以做傅立葉 學到一課

    回覆刪除
  9. 請問EXCEL內建的快速傅立葉分析是使用哪個公式呢?

    回覆刪除
    回覆
    1. 一直沒找到相關程式跟公式的資料,
      有找到再請不吝分享

      刪除
  10. 您好 請問一下 cos(10t)當中的10 跟sin(15t)當中的15 是如何設定出來的呢? 謝謝

    回覆刪除
  11. cos(10t)+cos(15t)裡的10 & 15是用來在excel裡產生範例資料用的,並沒有特別的意義,可以用別的數字代替,使用不同數字經過FFT轉換後會看到不同的頻率突起

    回覆刪除