首页 > 解决方案 > python - 功率谱的频率

问题描述

我想从我的数据集中绘制一个功率谱(大约 2000 个值的数组,每分钟记录一次数据)。

我已经做到了:

y= np.fft.fft(data)
abs = np.abs(y) #absolute value
p = np.square(abs) #power

但对设置频率感到困惑。

我试过使用freqs = np.fft.fftfreq(len(y)),但是当我绘制结果时,它看起来像这样,这是不对的。 在此处输入图像描述 我究竟做错了什么?

标签: pythonnumpy

解决方案


这是绘制功率谱的示例:

import matplotlib.pyplot as plt
import numpy as np

t = np.linspace(0,2000,200)
data = 2 * np.sin(2*np.pi *60*t) + 2 * np.sin(2*np.pi *42*t)

spectrum = np.fft.fft(data)
power_spectrum = np.square(np.abs(spectrum))

fig, ax = plt.subplots()
ax.plot(np.arange(len(power_spectrum)), power_spectrum)
plt.show()

在此处输入图像描述


推荐阅读