Я можу щось написати самостійно, знайшовши нульові перетинання першої похідної чи щось таке, але здається, що функція достатньо загальна для включення в стандартні бібліотеки. Хтось знає одного?
Моє конкретне додаток - це 2D масив, але зазвичай він би використовувався для пошуку піків у FFT та ін.
Зокрема, у подібних проблемах є кілька сильних піків, а потім безліч менших "піків", які просто викликані шумом, який слід ігнорувати. Це лише приклади; не мої фактичні дані:
1-мірні піки:
2-мірні піки:
Алгоритм знаходження піків знайшов би розташування цих піків (не лише їх значення), і в ідеалі знайшов би справжній пік між вибірками, а не лише індекс з максимальним значенням, ймовірно, використовуючи квадратичну інтерполяцію чи щось таке.
Зазвичай вам цікаво лише кілька сильних вершин, тому їх або обирають, оскільки вони перевищують певний поріг, або тому, що вони є першими n вершинами упорядкованого списку, ранжированими за амплітудою.
Як я вже говорив, я знаю, як написати щось подібне самостійно. Я просто запитую, чи існує функція або пакет, який, як відомо, працює добре.
Оновлення:
Я переклав сценарій MATLAB, і він працює пристойно для 1-D справи, але може бути кращим.
Оновлено оновлення:
Sixtenbe створив кращу версію для 1-D справи.
find_peaks
, тому я додав цю відповідь, яка може бути корисною для подальшого використання. (Я впевнений, що ви це вже знайшли з 2009 року, але це стосується інших людей + себе, коли я знову через кілька років