在我的Raspberry PI 4上,我有一个xlsx文件,我用:df = pd.read_excel('')
进行扫描这是具有146651行x 1列的压力传感器的数据集。我想对此数据集执行fft,但是如果绘制fft,我得到的曲线与时间信号完全相同(在x轴上移动???)。那是什么问题呢?
import numpy as np
import matplotlib.pyplot as plt
from scipy import fftpack
import pandas as pd
# Import csv file
df = pd.read_excel('/home/pi/Downloads/test_11.12.19_500_neuHz.xlsx', skiprows=1)
print(df)
sig_fft = fftpack.fft(df)
power = np.abs(sig_fft)
print (power)
sample_freq = fftpack.fftfreq(df.size, 0.02)
plt.figure(figsize=(6,5))
plt.plot(sample_freq, power)
plt.show()
您的输入数据必须在一行中。当前,您的FFT分别应用于所有行,这意味着任何给定行的输出都是单个单元信号的平均值,因此,您的输出与输入相同。
#data is one column
df = pd.DataFrame([4,5,4])
df
fft = fftpack.fft(df)
fft
# output = input => wrong
#data as one row
df = pd.DataFrame({'0':[4],'1':[5],'2':[4]})
df
fft = fftpack.fft(df)
fft
# right