У меня есть сигнал, который я пробую на 500 кГц. Я пытаюсь обнаружить взлет, падение и пик во входящих данных. Основание пика может составлять 250 мксек или 2,5 мсек, амплитуда может быть на 6 дБ или 15 дБ выше минимального уровня шума. У меня нет хорошего сна, к сожалению. Уровень постоянного тока сигнала не является постоянным, но движется гораздо медленнее, чем компонент переменного тока.
В момент принятия решения мне нужно знать наклон подъема и падения. Это сложная система реального времени, и мне действительно нужно принять решение в 100 мксек после того, как нисходящий наклон достигнет уровня постоянного тока.
Я ищу предложения, как я могу эффективно реализовать алгоритм, который является достойным.
В настоящее время я делаю скользящее среднее (последние 25 точек данных, сложенные вместе) и пытаюсь определить тренд. Как только я определяю тренд вверх, я начинаю искать тренд вниз, а когда я делаю это, я собираю еще около 50 образцов и начинаю вычислять.
Шум теперь легко закручивает этот алгоритм, отсюда и вопрос.
Обновить
В интересах других я в конечном итоге внедрил скользящее среднее, а затем интегратор. Скользящее среднее из последних 64 данных достаточно сглажено, но потеря степени возрастает, интеграция последних 8 значений вернула рост, и я просто ищу подъем и спад, позже я сделал линейную регрессию для наклона. Работает хорошо, не отлично, но хорошо.
источник
Ответы:
Вы должны начать с дифференциатора с ограниченной полосой пропускания (эквивалентно дифференциатору, за которым следует фильтр нижних частот). Дифференциатор удалит низкочастотный тренд и будет резко реагировать на ваши пики и уклоны. Компонент нижних частот удалит шум за пределами частоты среза.
Вы должны спроектировать частоту среза так, чтобы вы получали чистые импульсы для своих склонов.
Положительные склоны будут замедляться как положительные импульсы; отрицательные наклоны как отрицательные импульсы, и пик будет соответствовать пересечению нуля между положительным и отрицательным.
Этот тип фильтра обычно реализуется как FIR-фильтр. Количество выборок для вашего фильтра будет зависеть от ваших ограничений в реальном времени, резкости на частоте среза и самой частоты среза.
источник