我想用python计算给定信号的fft。X轴是时间(秒),y轴是电压。信号具有某种周期性,看起来像这样:
的数据
在这个post之后,我得到这个图:
的
这是正确的FFT吗?. csv文件为here。代码:
import numpy as np
import matplotlib.pyplot as plt
from pandas import read_csv
from scipy.fft import fft
plt.rcParams['figure.dpi'] = 1000
# load the dataset #1
dataframe = read_csv('data/1.csv', usecols=[1])
plt.plot(dataframe)
plt.show()
################ FFT Con scipy
#number of sample points
N = 100
#sampling period
T = 1
#create x-axis for time length of signal
x = np.linspace(0, N*T, N)
#create array that corresponds to values in signal
y = dataframe
y = y - np.mean(y)
#perform FFT on signal
yf = fft(y)
#create new x-axis: frequency from signal
xf = np.linspace(0.0, 1.0/(2.0*T), N//2)
#plot results
plt.plot(xf, abs(yf[0:N//2]), label = 'signal')
plt.grid()
plt.xlabel('Frequency')
plt.ylabel('Spectral Amplitude')
plt.legend(loc=1)
plt.savefig('fft.jpg')
plt.show()
字符串
1条答案
按热度按时间jxct1oxe1#
FFT是正确的,但你如何显示它是误导。您需要使用实际的采样周期:
字符串
的数据