Ash*_*ish 8 python numpy fft pandas
我有嘈杂的数据,我想要计算频率和幅度.每1/100秒收集样品.从趋势来看,我认为频率为~0.3
当我使用numpy
fft
模块时,我最终得到非常高的频率(36.32 /秒),这显然是不正确的.我尝试过滤数据pandas
rolling_mean
以消除fft之前的噪音,但这也无效.
import pandas as pd
from numpy import fft
import numpy as np
import matplotlib.pyplot as plt
Moisture_mean_x = pd.read_excel("signal.xlsx", header = None)
Moisture_mean_x = pd.rolling_mean(Moisture_mean_x, 10) # doesn't helps
Moisture_mean_x = Moisture_mean_x.dropna()
Moisture_mean_x = Moisture_mean_x -Moisture_mean_x.mean()
frate = 100. #/sec
Hn = fft.fft(Moisture_mean_x)
freqs = fft.fftfreq(len(Hn), 1/frate)
idx = np.argmax(np.abs(Hn))
freq_in_hertz = freqs[idx]
Run Code Online (Sandbox Code Playgroud)
有人可以指导我如何解决这个问题吗?
你说错了.人们需要明确地向第0栏询问大熊猫:
Hn = np.fft.fft(Moisture_mean_x[0])
Run Code Online (Sandbox Code Playgroud)
还有一些错误发生,你可以通过FFT结果不是对称的事实看出,这应该是实际输入的情况.