Python / C ++ Fast Gaussian Fit на 4 балла

Я пытаюсь сделать гауссионный пик реконструкцией. Особенность в том, что мне нужно набрать всего 4 очка, и мне нужно сделать это очень быстро. На данный момент я использую python с scipy curve_fit. Требуется около 0,5 мс / пик.

  • У кого-нибудь есть хорошая идея, как ускорить это? (рядом
    распараллеливание)
  • Есть ли вещи быстрее, чем Curve_Fit?
  • Может быть, какие-то особые вещи из-за факта, что у меня всего 4 очка
    чтобы соответствовать?
  • Я не привязан к питону.
    • Может ли это быть значительно быстрее с C ++?
    • Советы для хороших библиотек C ++ для этой работы?

Я знаю, что это очень широкий вопрос, поэтому спасибо за каждую полезную идею или подсказку.

Спасибо

2

Решение

В зависимости от шума и динамического диапазона ваших данных, вы можете преобразовать проблему в линейное соответствие.

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

 y = ae ^ {- vx ^ 2}

Кроме того, вы можете уместить ваши данные в

 log (y) = log (a) - bx ^ 2

Другими словами, после удаления базовой линии и при условии, что ваши данные имеют хороший S / N, вы можете взять журнал наших данных (y), квадрат вашей координаты (x) и подогнать его к прямой линии, например, простая линейная регрессия.

Кроме того, я хочу упомянуть, что существуют другие надежные быстрые методы, когда у вас есть больше точек данных по гауссову. Например, если вы можете взять вторую производную (используя фильтр), пересечения нуля соответствуют ширине гауссианы, а затем есть простая формула для высоты. В этом методе нет необходимости удалять базовую линию, поскольку производная делает это за вас.

0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector