cupyx.scipy.signal.peak_prominences#
- cupyx.scipy.signal.peak_prominences(x, peaks, wlen=None)[source]#
计算信号中每个峰值的突出度。
峰值的突出度衡量了峰值相对于信号周围基线的显着程度,其定义为峰值与其最低等高线之间的垂直距离。
- 参数:
x (序列) – 带有峰值的信号。
peaks (序列) – x 中峰值的索引。
wlen (int, 可选) – 采样点中的窗口长度,可选地将每个峰值的评估区域限制为 x 的子集。峰值始终位于窗口的中间,因此给定的长度会向上取整到下一个奇数整数。此参数可以加快计算速度(参见注释)。
- 返回值:
prominences (ndarray) – peaks 中每个峰值的计算突出度。
left_bases, right_bases (ndarray) – x 中每个峰值左右两侧的基点索引。每对基点中较高的一个标记了峰值的最低等高线。
- 抛出:
ValueError – 如果 peaks 中的值对于 x 是无效索引。
- 警告:
PeakPropertyWarning – 对于 peaks 中未指向 x 中有效局部最大值的索引,返回的突出度将为 0 并触发此警告。如果 wlen 小于峰值的平台大小,也会发生这种情况。
警告
此函数对于包含 NaN 的数据可能会返回意外结果。为避免此问题,应移除或替换 NaN。
另请参阅
find_peaks
根据峰值属性查找信号中的峰值。
peak_widths
计算峰值的宽度。
注释
计算峰值突出度的策略
从当前峰值向左和向右延伸一条水平线,直到该线到达窗口边界(参见 wlen)或在更高峰值的斜坡处再次与信号相交。与相同高度峰值的相交将被忽略。
在每一侧找到上述定义区间内的最小信号值。这些点是峰值的基点。
两个基点中较高的一个标记了峰值的最低等高线。突出度可以计算为峰值本身高度与其最低等高线之间的垂直差。
对于具有周期性行为的大型 x,搜索峰值的基点可能会很慢,因为算法的第一步需要评估大部分甚至整个信号。可以使用参数 wlen 限制此评估区域,该参数将算法限制在当前峰值周围的窗口内,如果窗口长度相对于 x 较短,则可以缩短计算时间。但是,如果峰值的真实基点在此窗口之外,这可能会阻止算法找到真实的全局等高线。相反,在受限窗口内会找到一条更高的等高线,从而导致计算出的突出度较小。在实践中,这仅与 x 中最高的一组峰值有关。此行为甚至可以有意地用于计算“局部”突出度。