【问题标题】:Setting absolute value for scipy.signal.peak_widths设置 scipy.signal.peak_widths 的绝对值
【发布时间】:2019-11-16 01:02:40
【问题描述】:

我刚刚开始使用 scipy 的信号函数。

在附图中,我试图找到曲线与任意阈值(检测到的峰值的左侧和右侧)相交的坐标 A[n] 的位置。使用peak_widths 给出点 B[n],其中 B 位于某个相对峰值位置。我正在寻找 A[n] 处于固定阈值的位置。

我该如何解决这个问题?我还不能添加内联图片,因为我是 Stack exchange 的新手。附图片。 提前致谢。

Annotated Plot from Code below

x = np.linspace(0, 6 * np.pi, 1000)
x = np.sin(x) #+ 0.6 * np.sin(2.6 * x)
peaks, _ = find_peaks(x,height=0.5)
threshold = 0.3
results_half = peak_widths(x, peaks, rel_height=0.5)
results_half[0]  # widths
plt.plot(x)
plt.plot(peaks, x[peaks], "x",color='r')
plt.hlines(*results_half[1:], color="C2")
plt.axhline(threshold,color='green')

【问题讨论】:

    标签: python numpy scipy


    【解决方案1】:

    peak_width 用于计算全宽半最大值“fwhm”(rel_height=0.5),它是一种类型(使用不同的 rel_heights)。 所以它总是寻找峰曲线的“开始”和“结束”来计算该峰的宽度。 (参见 scipy 示例:https://docs.scipy.org/doc/scipy/reference/generated/scipy.signal.peak_widths.html?highlight=peak_width

    这就是 B1 和 B2 与 B3-B6 位于不同高度的原因。您可以看到 B1 和 B2 位于起点(该峰值信号的最低点)和第一个峰值(该峰值信号的最高点)的中间,而 B3-B6 位于其最低点和最高点。

    我猜你正在寻找的是你的曲线和你的任意阈值定义的线之间的交点。尝试这样的操作:Intersection of two graphs in Python, find the x value 或者您可以使用 prominence_data 参数,如下所示:python scipy.signal.peak_widths --> absolute heigth? (fft -3dB damping)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-03-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-06-29
      相关资源
      最近更新 更多