cupyx.scipy.signal.peak_widths#
- cupyx.scipy.signal.peak_widths(x, peaks, rel_height=0.5, prominence_data=None, wlen=None)[源代码][源代码]#
计算信号中每个峰值的宽度。
此函数计算峰值在样本中的宽度,相对于峰值高度和显著性的相对距离。
- 参数:
x (sequence) – 一个带有峰值的信号。
peaks (sequence) – x 中峰值的索引。
rel_height (float, optional) – 选择测量峰宽的相对高度,作为其突出度的百分比。1.0 计算峰在其最低等高线处的宽度,而 0.5 则在突出度高度的一半处进行评估。必须至少为 0。详见注释以进一步解释。
prominence_data (tuple, optional) – 当使用相同的参数 x 和 peaks 调用 peak_prominences 时,匹配其输出的三个数组的元组。如果未提供,则此数据在内部计算。
wlen (int, optional) – 以样本为单位的窗口长度,作为可选参数传递给 peak_prominences 用于内部计算 prominence_data。如果提供了 prominence_data,则忽略此参数。
- 返回:
widths (ndarray) – 每个峰值的宽度,以样本为单位。
width_heights (ndarray) – 轮廓线的高度,在此高度上评估了 widths。
left_ips, right_ips (ndarray) – 在各自评估高度处水平线的左右交点的插值位置。
- 抛出:
ValueError – 如果提供了 prominence_data 但不满足每个峰值的条件
0 <= left_base <= peak <= right_base < x.shape[0],或者具有错误的 dtype,不是 C 连续的,或者形状不相同。- 警告:
PeakPropertyWarning – 如果在计算宽度时出现0,则会引发此警告。这可能源于提供的 prominence_data 或如果 rel_height 设置为0。
警告
对于包含 NaN 的数据,此函数可能会返回意外结果。为了避免这种情况,应删除或替换 NaN。
参见
find_peaks根据峰值属性在信号内寻找峰值。
peak_prominences计算山峰的突出度。
备注
计算峰值宽度的基本算法如下:
计算评估高度 \(h_{eval}\) 的公式为 \(h_{eval} = h_{Peak} - P \cdot R\),其中 \(h_{Peak}\) 是峰值本身的高度,\(P\) 是峰值的突出度,\(R\) 是一个由参数 rel_height 指定的正比率。
在评估高度处向两侧绘制一条水平线,从峰值的当前垂直位置开始,直到线条与斜率、信号边界相交或穿过峰值基部的垂直位置(参见 peak_prominences 的定义)。对于第一种情况,与信号的交点,使用线性插值估计真实的交点。
计算宽度为所选两侧端点之间的水平距离。因此,每个峰的最大可能宽度是其基部之间的水平距离。
如上所述,要计算一个峰的宽度,必须知道其突出度和基线。你可以通过参数 prominence_data 自己提供这些数据。否则,它们会在内部计算(参见 peak_prominences)。