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


9

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

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

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

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

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

Обновить

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


Можете ли вы опубликовать график последовательности данных, на котором ваш текущий алгоритм не работает?
— Джим Клэй

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

Ответы:


5

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

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

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

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


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

Также следующая ссылка решает похожую проблему и содержит множество ссылок. dsprelated.com/showmessage/123740/1.php
— Ktuncer,
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.