Я использую scipy fft для построения спектра по данным о скорости ветра с 10-минутным разрешением. Я написал сценарий на основе I python поваренной книги - Анализ частотных составляющих сигнала с помощью быстрого преобразования Фурье .
Это данные цери:
Мой график спектров не выглядит так, как ожидалось, конец спектров соединяется обратно с осью Y. Я очень новичок в FFT, поэтому я ожидаю, что это то, что я делаю неправильно.
![enter image description here](https://i.stack.imgur.com/P4uxO.png)
turb_list =['A01']
turb_df = pd.DataFrame({'StationName':turb_list}).merge(df_W)#filter df based on turb_list
event_name_list = [f for f in os.listdir(SARpath) if os.path.isfile(os.path.join(SARpath, f))] #only files, ignores sub dir
for event in event_name_list:
twelvelater = event_timestamp + datetime.timedelta(hours=12)
twelveearlier = event_timestamp - datetime.timedelta(hours=12)
df_24hour = df_W[(df_W['datetime']>= twelveearlier) &
(df_W['datetime']< twelvelater)]
#
for turb in turb_list:
df_turb = df_24hour[df_24hour['SName'].str.contains(turb)]
windspeed = df_turb['WSp_mean']
windspeed_fft = sp.fftpack.fft(windspeed)
windspeed_psd = np.abs(windspeed_fft) **2
fftfreq_windspeed = sp.fftpack.fftfreq(len(windspeed_psd), 1)
fig, ax = plt.subplots(1, 1, figsize=(8, 4))
plt.title(event_name + turb)
ax.plot(fftfreq_windspeed, 10 * np.log10(windspeed_psd))
ax.set_xlim(0, 0.5)
ax.set_xlabel('Frequency ( / hr)')
ax.set_ylabel('PSD (dB)')
plt.savefig(mypath + event_name +'_fft_1.png')
plt.close()