[英]plot numpy fft in python returns wrong plot
我正在嘗試使用 numpy fft 到 plot 來自 dataframe 的一些數據:
plt.plot(np.fft.fft(df_valid_daily_activity.stepsDaily))
我不明白為什么 plot 開始時如此陡峭,然后似乎趨於穩定? 我也收到此警告:
Casting complex values to real discards the imaginary part
return array(a, dtype, copy=False, order=order)
我正在嘗試 plot 的數據示例:
2 12693.0
3 18387.0
4 18360.0
5 11684.0
6 12722.0
...
273 27836.0
274 15566.0
280 7836.0
281 17787.0
284 7739.0
Name: stepsDaily, Length: 199, dtype: float64
任何想法為什么? 謝謝!
您使用的 function 是一個完整的復數傅里葉變換:當應用於實際數據時,它將關於零對稱。 您可以做兩件事:使用np.fft.fftshift
移動數據,使零頻率位於中間(或使用np.fft.fftfreq
來計算頻率)或使用np.fft.rfft
來轉換真實數據,並將返回完整 FFT 的一半。
最好知道您對 FFT 的預期用途。 大多數人(包括我自己)真的只對數據中存在的頻率感興趣。 為此,可以使用 FFT 的幅度平方(通常為對數刻度)的 plot。
我想發表評論,但由於我的聲譽我不能發表評論:)
我想您應該嘗試使用對數刻度圖。 首先,建議使用numpy.fft.fftshift
來“將零頻分量移到頻譜中心”。
import random
import matplotlib.pyplot as plt
import numpy as np
f = [random.randint(5000, 20000) for i in range(300)]
ff = np.fft.fftshift(f)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.