Розрахунок похідних


9

У мене є ряд даних (один масив). Якщо я візьму ці дані та побудую їх, я можу побачити, що існує кілька піків. Однак якщо я збільшив масштаб до розділу даних, я побачу, що тут є шум.

Мені подобається виявляти скільки піків у даних, використовуючи мало часу та енергії процесора. Я подумав виявити схили цих вершин (це може бути різке або плавне підняття чи падіння) і подивитися на кількість схилів, щоб визначити кількість вершин. (2 схили позитивні та негативні для кожного піку)

Будь-які покажчики, як я можу обчислити схили за наявності шуму?

Код перейде до вбудованої системи, об'єм пам'яті обмежений, тому я бажаю реалізувати щось, для чого не потрібна значна копія даних.


1
Вам здається, що в магазині просять щось потрібне

2
Якщо шум порівняно високий по частоті, то ви могли б пропустити фільтр даних
Пол Р

4
Чи можете ви розмістити один чи кілька прикладних графіків ваших даних? Це допоможе нам побачити, як це виглядає. Виявлення піку зазвичай не здійснюється за допомогою похідної оцінки, оскільки обчислення похідної сигналу дуже чутливе до шуму (це операція на високому частоті). Сигнал, що цікавить, може бути використаний для характеристики. Крім того, завжди існує компроміс між ймовірністю правильного виявлення піку та ймовірністю помилкового оголошення піку, який насправді не представляє інтересу. Що важливіше для вашої заявки?
Джейсон R

2
Якщо ви можете створити сюжет, було б корисно.
Джейсон Р.

1
Ви хочете виявити піки, ви можете пошукати пікове виявлення (подивіться на dsp.stackexchange.com/questions/1302/peak-detection-approach ).
Geerten

Відповіді:


1

Це залежить від типу шуму та типу сигналу. Покажіть приклад, якщо хочете гарної відповіді. Але, сказане, загалом ви, мабуть, хочете низькочастотний фільтр сигналу. Якби я був ти, я б взяв спектр потужностей Фур'є, щоб побачити, чи є більша частина шуму високої частоти, і сигнал, про який я дбаю, здебільшого знаходиться в нижньому діапазоні. Якщо вони перетинаються, добре, це життя. Мені доведеться більше думати про речі.

Один з фільтрів низьких частот, який підходить для галасливого сигналу, у багатьох випадках - це фільтр Савіцкого-Голай. Він описаний у числових рецептах, а для Python є функція у кулінарній книзі Python Numpy. Це просто згортання з невеликим ядром. Ви вибираєте розмір вікна виходячи з ширини вершин або інших функцій, достатньо широких, щоб зменшити шум, але не ширше, ніж функції. Це може бути невеликий, скажімо, п’ять балів, або більший, як десятки, може бути, сто.

Ви також вибираєте поліноміальний порядок - зазвичай я використовую 2 або 4. Порядок 2 добре, коли вікно невелике, <10 балів або воно охоплює менше півроку або близько того (якщо ваш сигнал нагадує синус), а замовлення 4 - краще співставляти спотворені форми піку, але любить мати близько 9 і більше очок. Але багато залежить від форми та частоти шуму.

Як говорять інші в коментарях, пошук похідних, мабуть, не є найкращою стратегією, але якщо ви все одно хочете знайти похідні, фільтр Savitzky-Golay може це зробити - одночасно згладжуючи та повідомляючи про похідну замість сигналу.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.