如何在左侧找到最接近的值

伊斯玛·海恩(IsmaHène)

我有一个功能,并且已经检测到该功能的峰值。我取了每个峰高的一半,现在我想找到函数和经过峰高一半的线之间的交点,仅在左侧。

请注意,在下图中,该线未完全通过峰的一半。确实,每个峰都有一个特定的中间高度值,我需要用这个值在左侧找到交点。

我的函数值是:

data= [2.50075550e+01  2.68589513e+01  2.88928569e+01  3.05468408e+01
 3.17558878e+01  3.28585597e+01  3.41860820e+01  3.56781188e+01
 3.68868815e+01  3.72671655e+01  3.65050587e+01  3.47342596e+01
 3.24647483e+01  3.02772213e+01  2.84592589e+01  2.68653782e+01
 2.51627240e+01  2.33132310e+01  2.18235229e+01 ...]

我使用SciPy的find_peaks达到了一半的高度

heights.append(signal.find_peaks(data, height=height)[1]['peak_heights'])

#Then calculating the half of each peak
          

约翰·C

下面的代码使用函数find_roots如何找到其中y == 0曲线的交点准确?此函数搜索与给定半值相对应的精确内插x值。该段仅限于前一个峰和当前峰之间的间隔,并且从结果列表中获取最后一个根(如果有)。

import numpy as np
import matplotlib.pyplot as plt
from scipy import signal

def find_roots(x, y):
    s = np.abs(np.diff(np.sign(y))).astype(bool)
    return x[:-1][s] + np.diff(x)[s] / (np.abs(y[1:][s] / y[:-1][s]) + 1)

np.random.seed(11235)
x = np.linspace(0, 20, 500)
data = np.convolve(1.1 ** np.random.randn(x.size).cumsum(), np.ones(40), 'same')
data -= data.min()
plt.plot(x, data, c='dodgerblue')
peaks, _ = signal.find_peaks(data, height=40, distance=50)

plt.scatter(x[peaks], data[peaks], color='turquoise')
for p, prev in zip(peaks, np.append(0, peaks)):
    half = data[p] / 2
    roots = find_roots(x[prev:p], data[prev:p] - half)
    if len(roots) > 0:
        plt.scatter(roots[-1], half, color='crimson')
plt.ylim(ymin=0)
plt.show()

样例

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在pinescript数组中找到最接近的值?

如何在 Python 中找到最接近数字的值?

如何在关联数组中找到最接近数字的值?

如何在字典中找到最接近但不超过变量的值的键?

如何在熊猫列/系列中找到最接近输入数字的值?

如何在Spark中找到两个DataFrame的最接近值

如何在数组角度 6 中找到最接近的较低值?

如何在同一列中找到最接近的值

如何找到最接近的元音?

如何找到模数为零的给定值的最接近除数

如何从POJO属性中找到Java中最接近的值?

mongodb-如何更快地找到最接近的值

如何找到最接近的 N 值?进入序列?

如何在Google地图中找到最接近的坐标

如何在jQuery中找到最接近的兄弟

如何在Java中找到最接近给定数字

如何在api函数中找到最接近的tr

如何在各列中找到最接近的数字?

如何在3维数组中找到最接近的数组

在排序列表中找到最接近/最接近的值

如何在R中的向量中找到一个值与其最接近的值之间的差?

如何在大型排序数组中高效找到最接近另一个值X的值

如何在 Pandas 数据框列中找到与 O(logn) 中输入值 x 最接近的 k 个值?

Python:如何在两个单独的数组之间找到两个相等/最接近的值?

如何在文本文件中查找数据,如果不存在,则找到最接近的值

如何在选择div中使用最接近的值

如何在SQL中获取最接近请求参数的值?

在python列表中找到最接近的值对

数学上找到最接近0的值