python - Python找到峰值 - 错误的x轴
问题描述
我得到以下代码:
Frequency = df['x [Hz]']
Spectrum = df['test_spec']
x = Spectrum
peaks, _ = find_peaks(x, distance=20)
plt.plot(peaks, x[peaks], "xr"); plt.plot(x); plt.legend(['distance'])
plt.show()
变量“频率”包含从 5 - 315 HZ 的第三频带倍频程频带频谱的频率。“频谱”包含相关的噪声压力级别。现在我想在那个光谱中找到峰值。我需要的值是峰值所在的频率。
问题是该图显示了一个带有步骤 0、5、10、15 的 x 轴,但我想要一个 x 轴刻度,我的频率保存在变量“频率”中。
希望您能够帮助我。
谢谢您的支持。
解决方案
find_peaks()的文档可能有点混乱,因为它调用它的输入x
,而在大多数情况下,输入将绘制在 y 轴上。find_peaks()
不关心 x 轴,假设它与数组索引 ( 0,1,2,...
) 相同。
要绘制曲线,您需要Frequency
在 x 轴和Spectrum
y 轴上绘制 using。您可以通过将它们用作两个数组中的索引来可视化峰值:
import matplotlib.pyplot as plt
from scipy.signal import find_peaks
import numpy as np
Frequency = np.linspace(5, 315, 200)
Spectrum = np.random.randn(200).cumsum()
Spectrum += 1 - Spectrum.min()
peaks, _ = find_peaks(Spectrum, distance=20)
plt.plot(Frequency[peaks], Spectrum[peaks], "xr")
plt.plot(Frequency, Spectrum)
plt.legend(['distance'])
plt.tight_layout()
plt.show()
推荐阅读
- server - 自由:中间上下文不存在:jms/xyz
- powershell - Powershell 计算属性 - 调用 HashTable 枚举器?
- java - 为什么更改 System.out 后还有输出?
- python - 在 Django 项目中不断收到 NoReverseMatch 错误
- html - Bootstrap、卡片+视频不适合手机屏幕
- c# - Azure .NET MVC 核心应用程序:找不到适合模型类型的构造函数
- c++ - 如何在 C++ 中正确导航目录路径
- javascript - 使用 openlayers 从地图中删除图层的问题
- c++ - 结构的 memcpy 操作中的分段错误
- c# - 如何解决Cannot convert type 'int' to 'int[]' 错误?