我有一个时域振动数据,并希望将其转换为频域与fft。然而,FFT的图只显示了一个大的峰值在零,而没有其他。
这是我的振动数据:https://pastebin.com/7RK57kJW

我的代码:
import numpy as np
import matplotlib.pyplot as plt
t = np.arange(3000)
a1_fft= np.fft.fft(a1, axis=0)
freq = np.fft.fftfreq(t.shape[-1])
plt.plot(freq, a1_fft)我的FFT图:

我在这里做错什么了?我很确定我的数据是一致的,在其他情况下,fft也会引发类似的问题。
发布于 2021-01-03 17:36:57
峰值在0是直流增益,这是非常高,因为你没有正常化你的数据。另外,傅里叶变换是一个复数,你应该分别画出绝对值和相位。在这段代码中,我只画出了正频率:
import numpy as np
import matplotlib.pyplot as plt
#Import data
a1 = np.loadtxt('a1.txt')
plt.plot(a1)
#Normalize a1
a1 -= np.mean(a1)
#Your code
t = np.arange(3000)
a1_fft= np.fft.fft(a1, axis=0)
freq = np.fft.fftfreq(t.shape[-1])
#Only plot positive frequencies
plt.figure()
plt.plot(freq[freq>=0], np.abs(a1_fft)[freq>=0])https://stackoverflow.com/questions/65551946
复制相似问题