Как найти точку перегиба в шумной кривой?

У меня есть шумная кривая, определяемая двумерным массивом numpy: mEPSC

Как вы можете видеть, он имеет первый плоский сегмент, затем фазу подъема, пика и распада. Мне нужно найти начальную точку фазы подъема, обозначенную здесь красной точкой. Как это сделать в python?

  • как получить поддеревья дендрограммы, сделанные scipy.cluster.hierarchy
  • Numpy: Умножение матрицы с тензором 3d - Предложение
  • Как реализовать полосовой фильтр Butterworth с Scipy.signal.butter
  • Быстрая линейная интерполяция в Numpy / Scipy «вдоль пути»
  • Установка данных в дистрибутивы?
  • Как распараллелить вычисление суммы в python numpy?
  • Чтение файлов MatLab в python w / scipy
  • Как найти конкретную «область» значений в массиве 2D numpy?
  • 2 Solutions collect form web for “Как найти точку перегиба в шумной кривой?”

    Если данные выглядят так, как показано на рисунке примера, вы можете оценить фон и уровень его шума и применить некоторый порог, чтобы извлечь часть данных, которые находятся выше фона. Пример:

     #!/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() 

    введите описание изображения здесь

    Ну, я вычислил локальные дифференциалы вдоль кривой для малого dt, а экстремум кривой производной достаточно хорошо показал «точку перегиба». Думаю, я соглашусь с этим. введите описание изображения здесь

    Python - лучший язык программирования в мире.