【发布时间】:2019-12-16 01:20:07
【问题描述】:
我正在开始分析从 csv 文件中获得的低频数据(能量监测)。
我检索数据(大约 12000 个点,但可能更多),我知道每分钟都有一个数据。
此采样率始终相同。
当我绘制数据时,它似乎是一个重复的过程(每天、每周和每月)。所以我想在绘制 FFT 时应该看到超低频。
这是我的代码。我不会向您展示我检索数据的部分,因为它不相关。
我还添加了一个低通滤波器来获得类似窦的功能。
## DATAS x-axis is x
## DATAS y-axis is y
# Number of Points ie 12000 points
N = len(y)
# 1 Sample per minute
T = 1 / 60.0
# Lowpass cutoff frequency
cutoff = 0.0001
x = np.linspace(0, T * N , N)
B, A = butter(4, cutoff / (T / 2), btype='low')
filterdY = lfilter(B, A, y, axis=0)
# Generating FFT
Fourier = abs(scipy.fft(filterdY));
freqs = scipy.fftpack.fftfreq(filterdY.size, x[1]-x[0])
pylab.subplot(311)
pylab.plot(x, y)
pylab.subplot(312)
pylab.plot(x, filterdY)
pylab.subplot(313)
pylab.plot(freqs,20*scipy.log10(Fourier),'x')
pylab.show()
这是我绘制的图表的屏幕截图。
它显示了一周的能源消耗,如您所见,5 天是明确定义的(较大的值)
我无法正确分析图表,但如果我将第二个纯正弦波信号添加到 y 值并且我不过滤总和,我可以从 FFT 中检索正弦频率。
由于日常过程的频率应为 1.0E-5 Hz,因此 FFT 很难读取。
我怎样才能得到这个频率?我是否应该考虑将原始数据加速 1.0E5,然后以 1Hz 获取图片?
这是一个 pythonfiddle ,其中数据数组存储在 y 变量中:http://pythonfiddle.com/fft-test
【问题讨论】:
-
有没有办法提供样本数据?
-
查看我的更新:pythonfiddle.com/fft-test
标签: python numpy scipy fft frequency-analysis