Оценивая время начала тонального шума?


14

Какие методы можно использовать для оценки времени начала синусоидального тона в шумном сигнале?

Предположим, что импульс тона имеет известную фиксированную частоту (но неизвестную фазу) и очень резкое время нарастания, и что цель состоит в том, чтобы оценить время начала лучше, чем половина времени нарастания, и / или один период частоты тона , если возможно. Как могут измениться методы оценки, если отношение сигнал / шум очень низкое (намного меньше 1)?

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

Добавлено: DFT / FFT показывает очень вероятное существование тона. Проблема состоит в том, чтобы точно определить, где в окне FFT тон (или, возможно, несколько пакетов тонов одной и той же частоты) мог начаться в окне FFT, или определить, начался ли текущий тон за пределами этого окна DFT, при условии, что у меня есть все это дополнительные данные временной области.

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


1
Можем ли мы предположить что-нибудь о шуме? Это стационарно? Это следует за каким-либо распределением?
Фонон

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

1
Вам нужно сделать это в режиме реального времени, или это анализ в автономном режиме?
nibot

2
@ hotpaw2: Что вам не понравилось в алгоритме Гёртцела согласно такому ответу ?
Питер К.

1
Алгоритм Гертцеля используется для обнаружения тона, который, кажется, то, что вы ищете. Выходной сигнал фильтра является оценкой «мощности» сигнала на частоте, на которую он настроен. Выберите порог. Если выход фильтра выше этого, вы обнаружили тональный сигнал. Установите свой порог соответствующим образом, и вы сможете обнаружить появление тона раньше (а также быть более склонными к ложным тревогам).
Питер К.

Ответы:


6

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

Алгоритм Гёртцела

еграмм

Алгоритм Гертцеля можно рассматривать как всегда рассчитывающий вывод ОДНОГО FFT бина:

Y(N)знак равноеȷ2πеграммNΣКзнак равно0NИкс(N)е-ȷ2πеграммК

еграмм

На странице Википедии есть лучший способ рассчитать это.

Вот (слабая) попытка Scilab реализовать его:

function [y,resultr,resulti] = goertzel(f_goertzel,x)
realW = 2.0*cos(2.0*%pi*f_goertzel);
imagW = sin(2.0*%pi*f_goertzel);

d1 = 0;
d2 = 0;

for n = 0:length(x)-1,
    y(n+1) = x(n+1) + realW*d1 - d2;
    d2 = d1;
    d1 = y(n+1);
    resultr(n+1) = 0.5*realW*d1 - d2;
    resulti(n+1) = imagW*d1;
end
endfunction

езнак равно0.0239074φзнак равно4.4318752

Иксзнак равногрех(2πеN+φ)+ε(N)

ε(N)

В этом примере тон начинается на трети пути к сигналу с индексом 1001.

еграммзнак равное-0,001

еграммзнак равное

Четыре следа:

  • ИксYеграммзнак равно0.0229074
  • реsULTр2+реsULTя2
  • ИксYеграммзнак равно0.0239074
  • реsULTр2+реsULTя2

Как вы можете видеть, случай, когда интересующий нас тон присутствует, достигает пика около 250. Если мы установим порог обнаружения около половины этого значения (125), то обнаружение произойдет (значение с квадратным корнем больше 125 ) около 1450 --- 450 образцов после начала тона.

Этот порог (125) не будет вызывать обнаружение в другом случае (для этого прогона, во всяком случае), но максимальное значение этого выхода составляет 115,24, мы не можем слишком сильно уменьшить порог без получения ложного обнаружения.

Снижение порога до 116 приведет к обнаружению в истинном случае (для этого прогона) с индексом 1401 ... но мы рискуем получить больше ложных тревог.

введите описание изображения здесь


Работающий фильтр Гёртцела более подходит, если нужно искать оценку существования только в пределах окна фиксированной длины. Работающий Goertzel без условия потери / затухания меняет свою полосу пропускания по всей своей длине, а более узкая полоса пропускания позднее обеспечивает ухудшающуюся оценку времени прибытия, более чувствительную к шуму и пороговым ошибкам.
hotpaw2

@ hotpaw2: правильно. Вы можете ввести «фактор забвения», чтобы Гертцель работал, но в остальном он все помнит.
Питер К.

Все помнит? Это FIR, который может быть реализован в рекурсивной форме. Что я здесь пропустил?
Оливер Чарльзуорт

Y(N)
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.