fft(fast fourier transformation)是離散傅氏變換(dft)的快速演算法。即為快速傅氏變換。它是根據離散傅氏變換的奇、偶、虛、實等特性,對離散傅利葉變換的演算法進行改進獲得的。
1.python**
依據快速傅利葉演算法得到訊號的頻域,將其各個頻率分量的幅值繪製成圖。為便於計算,我們將取樣頻率8000次近似設為8192次
正弦波表示式為: s(t) = 0.6 sin( 2π 50t ) 和s(t) = 0.6 sin( 2π 500t )
import numpy as np#匯入乙個資料處理模組
import matplotlib.pyplot as plt#匯入乙個繪圖模組
# 依據快速傅利葉演算法得到訊號的頻域
deftest_fft()
: sampling_rate =
8192
# 取樣率
fft_size =
8192
# fft取樣長度
t = np.arange(0,
8.192
,1.0
/ sampling_rate)
#np.arange(起點,終點,間隔)產生8.192s長的取樣時間
x=0.6*np.sin(
2*np.pi*
500*t)
+0.6
*np.sin(
2*np.pi*
50*t)
# 兩個正弦波疊加,500hz和50hz
# n點fft進行精確頻譜分析的要求是n個取樣點包含整數個取樣物件的波形。
# 因此n點fft能夠完美計算頻譜對取樣物件的要求是n*fs/n(n*取樣頻率/fft長度),
# 因此對8khz和512點而言,完美取樣物件的週期最小要求是8000/512=15.625hz,
# 所以156.25的n為10,234.375的n為15。
xs = x[
:fft_size]
# 從波形資料中取樣fft_size個點進行運算
xf = np.fft.rfft(xs)
/ fft_size # 返回fft_size/2+1 個頻率
#利用np.fft.rfft()進行fft計算,rfft()是為了更方便對實數訊號進行變換,
# 由公式可知 / fft_size為了正確顯示波形能量
# rfft函式的返回值是n/2+1個複數,分別表示從0(hz)到sampling_rate/2(hz)的分。
# 於是可以通過下面的np.linspace計算出返回值中每個下標對應的真正的頻率:
freqs = np.linspace(
0, sampling_rate*
10, fft_size/2+
1)# 表示頻率
#freqs = np.linspace(0, sampling_rate/2 , fft_size/2 + 1) # 表示頻率
xfp =
20* np.log10(np.clip(np.
abs(xf),1e
-20,1e100))
#xfp = np.abs(xf) * 2 # 代表訊號的幅值,即振幅
# 最後我們計算每個頻率分量的幅值,並通過 20*np.log10()將其轉換為以db單位的值。
# 為了防止0幅值的成分造成log10無法計算,我們呼叫np.clip對xf的幅值進行上下限處理
plt.figure(figsize=(8
,4))
plt.subplot(
211)
plt.plot(t[
:fft_size]
, xs)
plt.xlabel(u"時間(秒)"
, fontproperties=
'fangsong'
) plt.title(u"500hz和50hz的波形和頻譜"
, fontproperties=
'fangsong'
) plt.subplot(
212)
plt.plot(freqs, xfp)
plt.xlabel(u"頻率(hz)"
, fontproperties=
'fangsong'
)#字型fangsong
plt.ylabel(u'幅值'
, fontproperties=
'fangsong'
) plt.subplots_adjust(hspace=
0.4)
'''subplots_adjust(left=none, bottom=none, right=none, top=none, wspace=none, hspace=none)
有六個可選引數來控制子圖布局。值均為0~1之間。其中left、bottom、right、top圍成的區域就是子圖的區域。
wspace、hspace分別表示子圖之間左右、上下的間距。實際的預設值由matplotlibrc檔案控制的。
'''plt.show(
)test_fft(
)
2.結果顯示
python頻譜分析
import numpy as np import matplotlib.pyplot as pl sampling rate 8000 fft size 512 首先定義了兩個常數 sampling rate,fft size,分別表示數碼訊號的取樣頻率和fft的長度.由於快速離散傅利葉演算法的影...
頻譜分析 頻譜分析儀概述及選購要點
在無線通訊裝置 元器件或系統測試應用中,頻譜分析儀是應用最廣泛的測量裝置。它能測量和顯示射頻訊號的頻譜分布,也能測量和讀取頻率和幅值資訊。儘管當前無線通訊以數字通訊技術為主,但是頻譜分析儀測量頻譜仍然是一種不可缺少的重要手段。如需選擇頻譜分析儀,請先考慮如下關鍵點 1 頻率範圍 選擇合適的頻譜分析儀...
FFT頻譜分析原理
fft頻譜分析原理 取樣定理 取樣頻率要大於訊號頻率的兩倍。n個取樣點經過fft變換後得到n個點的以複數形式記錄的fft結果。假設取樣頻率為fs,取樣點數為n。那麼fft運算的結果就是n個複數 或n個點 每乙個複數就對應著乙個頻率值以及該頻率訊號的幅值和相位。第乙個點對應的頻率為0hz 即直流分量 ...