0

我想找到我的数据的 y 轴和我的 FFT(幅度)的垂直轴之间的关系。为此,我正在测试当我更改数据的 y 轴时 FFT 的幅度如何变化。例如,我绘制了从 0 到 2*pi 的 sin(t),并使用 Numpy 的 FFT 包进行 FFT,得到的频率约为 1/(2*pi)。然后我将 1 添加到我的所有 y 值中,只是为了将我的正弦函数在任何地方上移 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()

初始数据 FFT 移位数据 FFT

4

1 回答 1

0

试试这个,它会让你相信一切都很好:

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

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

于 2016-07-07T20:37:50.177 回答