gpt4 book ai didi

numpy - 改进信号峰值分析的技巧。 (峰宽)

转载 作者:行者123 更新时间:2023-11-30 09:22:39 25 4
gpt4 key购买 nike

  • 大家好。我有数百个这种形式的信号检测到高于某个阈值的峰值。

enter image description here

我将峰宽定义为FWHM(半高全宽)。但是,我已将三次多项式拟合到信号的谷值,因此我将峰值定义为与该基线的距离,其索引与峰到峰的索引相同。

我将峰宽计算为信号与最大值一半的线之间的最大距离。它看起来像这样:

roots = indeces_of_intersections

intersection_lengths=[abs(y - x) for x, y in it.combinations(roots, 2)]

calculated_width = max(intersection_lengths)

我在一致地计算峰宽度时遇到问题,这是因为有时该线与不同峰上的点相交。

enter image description here

限制了定义此相交线的域:

域 = [峰左侧一点,右侧一点]

但此域限制对于所有峰都是相同的。

我考虑过以某种方式针对不同的峰值更改此域,但不确定如何实现。我的代码几乎是完全自动化的,我必须保持这种状态。

enter image description here

最佳答案

将我的问题发布到此处帮助我实现了一个简单的解决方案:

more_than_peak=[x for x in it.ifilter(lambda x: x if x>peaks[i] else 0, roots)]
less_than_peak=[x for x in it.ifilter(lambda x: x if x<peaks[i] else 0, roots)]
if len(more_than_peak)>0 or len(less_than_peak)>0:
width = min(more_than_peak)-max(less_than_peak)

在这里,我找到峰值索引左侧和右侧的交点。然后,我在峰值右侧找到最小的一个,在左侧找到最大的一个(x 轴向右增加)。如此简单快捷!

关于numpy - 改进信号峰值分析的技巧。 (峰宽),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28839927/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com