首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为scipy.signal.peak_widths设置绝对值

为scipy.signal.peak_widths设置绝对值
EN

Stack Overflow用户
提问于 2019-11-16 09:02:40
回答 1查看 178关注 0票数 3

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

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

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

Annotated Plot from Code below

代码语言:javascript
运行
复制
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')
EN

回答 1

Stack Overflow用户

发布于 2021-02-06 05:01:30

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)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58886564

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档