Вычисление амплитуды фрагмента сигнала, игнорирование коротких пиков

У меня есть входящий тестовый синусоидальный сигнал с микрофона. Я знаю, что могу найти пиковую амплитуду, просто просканировав образцы волновой формы и найдя максимальную амплитуду (принимая во внимание, что она может быть и отрицательной). Я беру куски около 500 мс.

Проблема в том, что входящий сигнал может содержать случайные короткие пики из-за шумов. Вот почему я не могу измерить максимальную величину — я мог бы найти пиковый уровень шума.

Есть ли какой-нибудь стабильный алгоритм, который позволил бы мне рассчитать основное пиковое значение фрагмента сигнала, но отбросить некоторые короткие шумные пики, которые не являются полезным сигналом?

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


person JustAMartin    schedule 01.09.2012    source источник


Ответы (1)


Первый подход: для каждого (из некоторой сетки) порогов s > 0 подсчитайте количество точек данных, превышающих s. Это даст вам меру продолжительности, в течение которой звук был громче, чем с. Теперь определите, насколько коротким должен быть шум, чтобы его можно было считать «шумом».

Вы можете уточнить это, не просто подсчитывая, но и взвешивая точки данных, превышающие s больше, если вы наблюдали много таких точек данных в недалеком и недалеком прошлом, что позволяет вам отличать очень короткие пики от более длительные периоды более высокой амплитуды.

person JohnB    schedule 01.09.2012