【发布时间】:2020-10-03 04:26:46
【问题描述】:
我有一个包含时间和扭矩数据的 csv 文件。 https://pastebin.com/MAT2rG3U此数据集因大小限制而被截断。
我正在尝试查找数据的 FFT 以找到振动的频率。
这是我的代码(这是我使用的示例 Fast Fourier Transform in Python ),它不会产生任何结果。我研究了很多在线资源,找不到我的错误
import matplotlib.pyplot as plt
import pandas as pd
import numpy as np
data = pd.read_csv('data.csv',index_col=0)
data = data['Torque'].astype(float).values
print(data)
N = data.shape[0] #number of elements
t = np.linspace(0, 300, N)
#t=np.arange(N)
s = data
fft = np.fft.fft(s)
fftfreq = np.fft.fftfreq(len(s))
T = t[1] - t[0]
print(T)
f = np.linspace(0, 1 / T, N)
plt.ylabel("Amplitude")
plt.xlabel("Frequency [Hz]")
plt.plot(fftfreq,fft)
#plt.xlim(0,100)
plt.show()
【问题讨论】:
-
问“为什么这不起作用”在 SO 上不会走得太远。你得到什么样的错误?
-
无错误,plot中没有数据,fft全是nan。对不起,我糟糕的发帖礼仪。
-
您可以尝试绘制
np.absolute(fft)以确保这不是复数问题吗?无论如何,为了获得 fft 的大小,几乎总是应该这样做。 -
我试过 np.absolute(fft) 还是一样的结果。打印 fft 产生 [nan+nanj nan+nanj nan+nanj ... nan+nanj nan+nanj nan+nanj]
-
不知道输入频率是多少。
标签: python pandas numpy matplotlib fft