scipy 如何只得到最大宽度?

vh0rcniy  于 2022-11-10  发布在  其他
关注(0)|答案(1)|浏览(176)

我试图计算最大值处的宽度,但使用peak_width时,它返回信号内的所有峰值宽度。

from scipy.signal import chirp, find_peaks, peak_widths
    import matplotlib.pyplot as plt

    x = np.linspace(0, 6 * np.pi, 1000)
    y = np.sin(x) + 0.6 * np.sin(2.6 * x)
    peaks, _ = find_peaks(y)
    results_half = peak_widths(y, peaks, rel_height=0.5)
    results_half[0]
    plt.plot(y)
    plt.plot(peaks, y[peaks], "x")

    plt.hlines(*results_half[1:], color="C2")
    plt.show()

这是https://docs.scipy.org/doc/scipy/reference/generated/scipy.signal.peak_widths.html中的示例
我只想得到最大宽度。

我想用最大峰值位置的指数来求最大峰值的半高宽。我怎样才能求出最大值对应的宽度呢?

i_max_peak = peaks[np.argmax(y[peaks])]
    y_max =y[i_max_peak]

我想得到最大峰值的宽度值。

omtl5h9j

omtl5h9j1#

我想你已经成功了一半。
你已经得到了最大峰值的索引,剩下的是从results_half[0]得到宽度
所以我相信这会给予你你想要的

max_peak_loc = np.argmax(y[peaks])
widths = results_half[0] 
widths[max_peak_loc]

相关问题