python - python - 功率谱的频率
问题描述
我想从我的数据集中绘制一个功率谱(大约 2000 个值的数组,每分钟记录一次数据)。
我已经做到了:
y= np.fft.fft(data)
abs = np.abs(y) #absolute value
p = np.square(abs) #power
但对设置频率感到困惑。
我试过使用freqs = np.fft.fftfreq(len(y))
,但是当我绘制结果时,它看起来像这样,这是不对的。
我究竟做错了什么?
解决方案
这是绘制功率谱的示例:
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()
推荐阅读
- python - 检测我的鼠标何时在 2 rect 上并选择操作
- php - Laravel 租赁包中的会话范围
- php - 如何获取不同存储库的图像?[错字3]
- jquery - 使用 JQuery 从 JSON 文件中提取值
- android - ML-KIT 是否包含视觉相机文本识别 API?
- python - OpenCV VideoWriter 是否使用 FFmpeg?它如何处理压缩或其他选项?
- vue.js - 将 URL 的最后一部分传递到挂载的钩子中
- ruby-on-rails - Ruby on Rails 表单中的枚举选择映射值
- amazon-web-services - 在子目录中托管 tomcat Web 应用程序
- visual-studio - Visual Studio 在添加到项目/上传到 GitHub 时忽略我的 .obj 3D 模型文件