当前位置:  开发笔记 > 编程语言 > 正文

如何在嘈杂的曲线中找到拐点?

如何解决《如何在嘈杂的曲线中找到拐点?》经验,为你挑选了2个好方法。

我有numpy 2D数组定义的嘈杂曲线: mEPSC

如您所见,它具有第一个平坦段,然后是上升,峰值和衰减阶段.我需要找到上升阶段的起点,这里用红点标记.我怎么在python中做到这一点?



1> Taro Sato..:

如果数据看起来与示例图中的数据类似,则可以估计背景及其噪声级别,并应用一些阈值来提取高于背景的数据部分.示例如下:

#!/usr/bin/env python2.7
# -*- coding: utf-8 -*-
import matplotlib.pyplot as plt
import numpy as np
from scipy.ndimage import gaussian_filter


def generate_fake_data():
    """Generate data that looks like an example given."""
    xs = np.arange(0, 25, 0.05)
    ys = - 20 * 1./(1 + np.exp(-(xs - 5.)/0.3))
    m = xs > 7.
    ys[m] = -20.*np.exp(-(xs - 7.)[m] / 5.)

    # add noise
    ys += np.random.normal(0, 0.2, xs.size)
    return xs, ys


def main():
    xs, ys = generate_fake_data()

    # smooth out noise
    smoothed = gaussian_filter(ys, 3.)

    # find the point where the signal goes above the background noise
    # level (assumed to be zero here).
    base = 0.
    std = (ys[xs < 3] - base).std()
    m = smoothed < (base - 3. * std)
    x0 = xs[m][0]
    y0 = ys[m][0]

    plt.plot(xs, ys, '.')
    plt.plot(xs, smoothed, '-')
    plt.plot(x0, y0, 'o')
    plt.show()


if __name__ == '__main__':
    main()

在此输入图像描述



2> Axon..:

好吧,我计算了小dt沿曲线的局部微分,导数曲线的极值很好地指出了"拐点".我想,我会解决这个问题. 在此输入图像描述


嗨!你能添加代码,可以找到"拐点"吗?
推荐阅读
echo7111436
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有