Python中的FFT-错误的数据?

问题描述 投票:0回答:1

在我的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()

graph

python raspberry-pi fft sensor
1个回答
0
投票

您的输入数据必须在一行中。当前,您的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
© www.soinside.com 2019 - 2024. All rights reserved.