我有一个包含时间和扭矩数据的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()
您发布的内容对我有用,但您的数据对于FFT无效,因为时间步长不一致。也就是说,您没有定义好的采样率
给出NAN的样本中没有包含的数据可能有问题
但是,在您提供的数据中,采样率并不一致,这是FFT所必需的。要查看此信息,请绘制时间步长的直方图:
因为很多时间步都有不同的值,所以我担心会信任FFT。(当我第一次查看您的数据时,早期的大多数点似乎都有0.004s的时间步长,因此我想知道您的数据采集是否随着时间的推移而变化,而不仅仅是随机的,但无论如何,您也需要对其进行排序。)有解决方案,如插值/重采样或下采样,但是,如果没有修复,人们无法可靠地相信FFT结果
相关问题 更多 >
编程相关推荐