簡體   English   中英

使用 Python 的 FFT

[英]FFT using Python

我正在以兩個 numpy arrays 的形式從振動傳感器接收數據。 第一個數組表示振動測量的實際值,第二個數組是相應的時間信息(時間戳)。 例如:

vibraton_data = np.array([621,1546,262])

timestamps = np.array([1592583531, 1592583548, 1592583555])

這意味着對於每次振動測量,我都有時間信息。

我現在想申請快速傅里葉變換。 有誰知道這是怎么做到的嗎? 我的第一次嘗試是這樣的:

N = 600 
T = 1.0 / 800.0 
x = np.linspace(0.0, N*T, N)
yf = fft(vibration_data)
xf = np.linspace(0.0, 1.0/(2.0*T), N/2)

但我不知道如何處理我的時間數組中的時間信息。

這確實是一個信號處理問題,而不是 Python 問題。 您在這里有幾個選擇:

  • 如果您的數據是統一采樣的 - 您可以完全忽略時間戳。 您需要的所有信息都在數據中,並且(恆定)采樣頻率:f_s = 1.0 / (timestamps[1] - timestamps[0])
  • 如果沒有,您可以:
    • 使用Non-uniform DFT這里是一種實現,沒試過)
    • 在非統一時間戳之間插入數據,使其變得統一。 請注意,實際上,這會對您的數據應用低通濾波器,這可能不是您想要的(更多關於插值的影響here )。

在所有情況下,當您執行 FFT 時,不再需要時間信息,因為您處於頻域中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM