沿垂直轴移动数据时出现Numpy FFT问题

时间:2016-07-07 19:37:39

标签: python numpy fft sine amplitude

我想找到数据的y轴和我的FFT的垂直轴(振幅)之间的关系。为此,我正在测试当我更改数据的y轴时FFT的幅度如何变化。例如,我将sin(t)从0绘制为2 * pi,并使用Numpy的FFT包进行FFT,并获得大约1 /(2 * pi)的频率。然后我将所有y值加1,仅仅是为了将我的正弦函数向上移动1个单元;然而,当我接受FFT时,我得到的东西毫无意义。当我仅向上移动正弦函数时,为什么FFT完全不同?任何帮助将不胜感激。提前谢谢。

import math
import numpy as np
import numpy.fft as fft
import matplotlib.pyplot as plt

t = np.linspace(0, 2*math.pi, 10)
y1 = np.sin(t)
y2 = np.sin(t) + 1
plt.plot(t, y2)    # y1 can be used instead
plt.xlabel('time')
plt.ylabel('height')
plt.show()

fft_power = fft.fft(y2)    # y1 can be used instead
rfft_power = fft.rfft(y2)    # y1 can be used instead

sample_spacing = 0.6981317

frequency = fft.fftfreq(len(fft_power), sample_spacing)
real_frequency = fft.rfftfreq(len(fft_power), sample_spacing)

plt.plot(real_frequency.real, rfft_power.real)
plt.xlabel('frequency')
plt.ylabel('amplitude')
plt.show()

initial data FFT shifted data FFT

1 个答案:

答案 0 :(得分:0)

试试这个,它会说服你一切运作良好:

t = np.linspace(0, 2*math.pi, 10000)
y2 = np.sin(200*t) + 1

1在0频率处增加了非常强的峰值。但是罪恶高峰也在那里。