Обнаружение и расчет наклона и пика в реальном времени

9

У меня есть сигнал, который я пробую на 500 кГц. Я пытаюсь обнаружить взлет, падение и пик во входящих данных. Основание пика может составлять 250 мксек или 2,5 мсек, амплитуда может быть на 6 дБ или 15 дБ выше минимального уровня шума. У меня нет хорошего сна, к сожалению. Уровень постоянного тока сигнала не является постоянным, но движется гораздо медленнее, чем компонент переменного тока.  

В момент принятия решения мне нужно знать наклон подъема и падения. Это сложная система реального времени, и мне действительно нужно принять решение в 100 мксек после того, как нисходящий наклон достигнет уровня постоянного тока. 

Я ищу предложения, как я могу эффективно реализовать алгоритм, который является достойным.  

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

Шум теперь легко закручивает этот алгоритм, отсюда и вопрос. 

Обновить

В интересах других я в конечном итоге внедрил скользящее среднее, а затем интегратор. Скользящее среднее из последних 64 данных достаточно сглажено, но потеря степени возрастает, интеграция последних 8 значений вернула рост, и я просто ищу подъем и спад, позже я сделал линейную регрессию для наклона. Работает хорошо, не отлично, но хорошо.

Ktuncer
источник
Можете ли вы опубликовать график последовательности данных, на котором ваш текущий алгоритм не работает?
Джим Клэй
Делать подобные вещи, несмотря на значительный шум, довольно сложно. Предложение Хуанчо о дифференцировании, вероятно, является хорошим.
Даниэль Р Хикс

Ответы:

5

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

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

Положительные склоны будут замедляться как положительные импульсы; отрицательные наклоны как отрицательные импульсы, и пик будет соответствовать пересечению нуля между положительным и отрицательным.

Этот тип фильтра обычно реализуется как FIR-фильтр. Количество выборок для вашего фильтра будет зависеть от ваших ограничений в реальном времени, резкости на частоте среза и самой частоты среза.

Juancho
источник
Я не очень хорошо разбираюсь в DSP. Можете ли вы указать мне на возможную реализацию? Исходя из вашего ответа и моих ограниченных знаний, я думаю, что ссылка ( holoborodko.com/pavel/numeric-methods/numeric-derivative/… ) делает именно то, что вы упоминаете. Если бы я использовал такой подход, я не знаю 1) Как определить мои частоты? 2) Как выбрать коэффициенты фильтра?
Ktuncer
Также следующая ссылка решает похожую проблему и содержит множество ссылок. dsprelated.com/showmessage/123740/1.php
Ktuncer,