Оцінюючи час виникнення тону, який вибухнув шумом?


14

Які методи можна використати для оцінки часу настання синусоїдального тону вибуху в галасливому сигналі?

Припустимо, вибух тону має відому фіксовану частоту (але невідому фазу) та дуже різкий час підйому, і мета полягає в тому, щоб оцінити час настання в межах, що перевищує половину часу підйому, та / або одного періоду частоти тону. , якщо можливо. Як можуть змінитися методи оцінки, якщо співвідношення S / N дуже низьке (набагато менше 1)?

Додано: Припустимо, тональний сигнал невідомої довжини, але довший, ніж малий кратний час підйому та періодичність.

Додано: DFT / FFT показує дуже ймовірне існування тону. Проблема полягає в точному з'ясуванні, де у вікні FFT тон (або, можливо, кілька тонових сплещів однакової частоти), можливо, починався у вікні FFT, або визначення того, чи почався поточний тон поза цим вікном DFT, за умови, що я маю все це додаткові дані часового домену.

Точність виявлення імпульсу радіолокатора наближається до потрібної мені роздільної здатності, за винятком того, що я маю лише кромку, оскільки тон невідомої довжини, і, крім відомого часу підйому, немодульований. Вузькі фільтри пропускання смуги спотворюють час підйому і, таким чином, знищують роздільну здатність оцінки прильоту.


1
Чи можемо ми припустити щось про шум? Це стаціонарно? Чи слідкує за будь-яким розподілом?
Phonon

2
Чи неправдиві тривоги вашого детектора небажані? Чи є у вас специфікація щодо ймовірності правильного виявлення кожного пульсу? Це дуже схоже на (спрощену версію) фронтової радіолокаційної обробки сигналу; локалізація (можливо, модульована) імпульсів, вбудованих у шум, та оцінка їх параметрів.
Jason R

1
Чи потрібно це робити в режимі реального часу чи це офлайн-аналіз?
nibot

2
@ hotpaw2: Що вам не сподобалося в алгоритмі Ґерцеля відповідно до цієї відповіді ТАК ?
Пітер К.

1
Алгоритм Ґерцеля використовується для виявлення тону, який, здається, є тим, що ви хочете. Вихід фільтра - це оцінка "потужності" сигналу на частоті, на яку він налаштований. Виберіть поріг. Якщо вихід фільтра вище цього, ви виявили тон. Встановіть свій поріг відповідним чином, і ви зможете виявити початок тону раніше (а також бути більш схильним до помилкових сигналів тривоги).
Пітер К.

Відповіді:


6

Як ми обговорювали в коментарях, алгоритм Ґерцеля є звичайним способом виявлення тону в шумі. Після обговорення я не впевнений, що це саме те, що ви хочете (ви хочете час наступу ), але, здавалося, виникає плутанина з приводу того, як алгоритм Ґерцеля може бути застосований до вашої проблеми, тому я подумав, що напишу це тут.

Алгоритм Ґерцеля

Алгоритм Ґерцеля корисно використовувати, якщо ви знаєте частоту потрібного тону (називайте його ) і якщо ви маєте розумне уявлення про рівень шуму, щоб ви могли вибрати відповідний поріг виявлення.fг

Алгоритм Гьерцеля можна вважати як завжди обчислення виходу ОДНОГО FFT відро:

у(н)=еȷ2πfгнк=0нх(н)е-ȷ2πfгк

де - частота, яку ви шукаєте.fг

На сторінці Вікіпедії є кращий спосіб обчислити це.

Ось (слабка) спроба 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

Розглянемо сигнал з і ϕ = 4,4318752 :f=0,0239074ϕ=4.4318752

х=гріх(2πfн+ϕ)+ϵ(н)

ϵ(н)

У цьому прикладі тон починає третину шляху в сигнал в індексі 1001.

fг=f-0,001

fг=f

Чотири сліди:

  • хуfг=0,0229074
  • rесултr2+rесултi2
  • хуfг=0,0239074
  • rесултr2+rесултi2 (суцільна лінія) і перший результат (пунктирна лінія).

Як бачимо, випадок, коли нам цікавий тон, є максимуми приблизно в 250. Якщо ми встановимо поріг виявлення приблизно вдвічі від цього значення (125), то виявлення відбувається (значення, що має квадратне значення, більше 125 ) приблизно в індексі 1450 --- 450 проб після початку тону.

Цей поріг (125) не спричинить виявлення в іншому випадку (для цього запуску в будь-якому випадку), але максимальне значення цього виходу становить 115,24, ми не можемо надто зменшити поріг, не отримавши помилкове виявлення.

Зниження порогу до 116 призведе до виявлення в справжньому випадку (для цього запуску) за індексом 1401 ... але ми ризикуємо отримати більше помилкових тривог.

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


Працюючий фільтр Ґерцеля є більш підходящим, якщо шукати лише оцінку існування у вікні фіксованої довжини. Запуск Goertzel без терміну втрати / занепаду змінює його пропускну здатність по своїй довжині, а вузька смуга пропускання пізніше забезпечує погіршення оцінки часу прибуття, більш чутлива до шуму та порогових помилок.
hotpaw2

@ hotpaw2: Правильно. Ви можете ввести "фактор забуття", щоб тримати Ґерцеля, але в іншому випадку він запам'ятовує все.
Пітер К.

Пам'ятає все? Це FIR, який може бути реалізований у рекурсивній формі. Що я тут пропустив?
Олівер Чарльзворт,

@Oli: Якщо ви подивитеся на рівняння для у(н)вище, ви відзначите, що це не закінчується. Так, це оцінювання (масштабований) коефіцієнт DFT, але це точно не FIR.
Пітер К.
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.