用python進行快速傅里葉變換(FFT)

我們指定信號的采樣率為1kHz,采樣時間為1.5s

import numpy as np
from scipy.fftpack import fft,ifft

Fs = 1000 #采樣頻率
T = 1/Fs #采樣周期,只相鄰兩數(shù)據(jù)點的時間間隔
L = 1500 #信號長度
t = list(range(1500)*T)

構(gòu)造一個信號,其中包含幅值為 0.7 的 50 Hz 正弦量和幅值為 1 的 120 Hz 正弦量。
S = 0.7*sin(2*pi*50*t) + sin(2*pi*120*t)

S = 0.7*np.sin(2*np.pi*50*t) + np.sin(2*np.pi*120*t)

添加符合標準正太分布的噪聲信號:

X = S + np.random.rand(L)

在時域中繪制含噪聲的信號:

plt.plot(t[:50], X[:50])
plt.xlabel("Time(s)")
plt.ylabel("Amplitude")
plt.title("Signol with random noise")
plt.show()
時域信號

計算信號的傅里葉變換

Y = fft(X)
p2 = np.abs(Y)   # 雙側(cè)頻譜
p1 = p2[:int(L/2)]

定義頻域 f 并繪制單側(cè)幅值頻譜 P1。與預(yù)期相符,由于增加了噪聲,幅值并不精確等于 0.7 和 1。

f = np.arange(int(L/2))*Fs/L;
plt.plot(f,2*p1/L) 
plt.title('Single-Sided Amplitude Spectrum of X(t)')
plt.xlabel('f (Hz)')
plt.ylabel('|P1(f)|')
plt.show()
幅頻圖

完整代碼

import numpy as np
from scipy.fftpack import fft,ifft
from matplotlib.pylab import plt

Fs = 1000 #采樣頻率
T = 1/Fs #采樣周期,只相鄰兩數(shù)據(jù)點的時間間隔
L = 1500 #信號長度
t = np.arange(L)*T

S = 0.7*np.sin(2*np.pi*50*t) + np.sin(2*np.pi*120*t)
X = S + np.random.rand(L)

plt.plot(t[:50], X[:50])
plt.xlabel("Time(s)")
plt.ylabel("Amplitude")
plt.title("Signol with random noise")
plt.show()

Y = fft(X)
p2 = np.abs(Y)   # 雙側(cè)頻譜
p1 = p2[:int(L/2)]
f = np.arange(int(L/2))*Fs/L;
plt.plot(f,2*p1/L) 
plt.title('Single-Sided Amplitude Spectrum of X(t)')
plt.xlabel('f (Hz)')
plt.ylabel('|P1(f)|')
plt.show()

參考:
快速傅里葉變換

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 一、傅立葉變換的由來 關(guān)于傅立葉變換,無論是書本還是在網(wǎng)上可以很容易找到關(guān)于傅立葉變換的描述,但是大都是些故弄玄虛...
    constant007閱讀 4,671評論 1 10
  • 快速傅里葉變換(FFT) 離散傅里葉變換(DFT) 基礎(chǔ)理論是傅里葉變換的分離形式,和采樣定理(香菜定理) 采樣定...
    DUTZCS閱讀 3,089評論 0 1
  • 對于通信和信號領(lǐng)域的同學來說,傅里葉變換、信號采樣定理一定不陌生。本文主要對傅里葉變換中涉及的時頻關(guān)系對應(yīng)進行說明...
    in469閱讀 4,392評論 0 0
  • 傅里葉變換 傅里葉變換(Fourier Transform,簡稱FT)常用于數(shù)字信號處理,它的目的是將時間域上的信...
    lk311閱讀 2,105評論 0 2
  • 一、轉(zhuǎn)載自如何直觀形象、生動有趣地給文科學生介紹傅里葉變換? 從數(shù)學的角度,提供一個形象有趣的解釋。理解傅里葉變換...
    合肥黑閱讀 1,872評論 0 2

友情鏈接更多精彩內(nèi)容