Згладжування сигналу / виявлення ударів у потоці даних


11

(EDIT: Це питання випливає з вилучення даних бінарних магнітних смужок із необроблених WAV )

Ось мій сигнал (верхній рядок) та застосовано базовий фільтр IIR (нижній рядок)

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

(EDIT: моє завдання - розбити сигнал на бінарний 0 (частота F) та двійковий 1 (частота 2F) - тому його називають F2F. Тому мені потрібно обробити його таким чином, щоб не гарантувати помилкових піків. Хоча на скріншоті це виглядає тривіально, існує потенційна проблема отримання подвійного піку, а також отримання помилкових позитивних результатів в жолобі між реальними вершинами.)

Моє запитання, які методи доступні для згладжування цього сигналу? IIR - моя найкраща ставка?

Я бачу принаймні три можливості:

  • IIR y [n] = 0,9 * y [n-1] + 0,1 * x [n], де y [x] = 0, коли x <0

  • Рухоме / віконне середнє - розмістіть криву Белла площею 1,0 над навколишнім, скажімо, w = 10 зразків кожної сторони та інтегруйте bellSmooth (x) = інтеграл [xw, x + w] {bell (k) .samp (k)} dk

  • Визначте очікувану частоту та FFT / видаліть бункери вищого порядку / зворотний FFT

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

Чи є інші методи?


6
Які характеристики вихідного сигналу ви намагаєтесь зберегти / виміряти? Наприклад, час між піковими точками, висота піку, кількість часу над порогом, щось інше?
Мартін Томпсон

Час між піками ... і навіть це не повинно бути надто точним - це сигнал F2F (я поправлю питання на посилання на джерело сигналу і наводя контекст)
P i

Це для онлайнової чи офлайн обробки?

Тема моєї дипломної роботи - згладжування шуму в потоці даних. Чи подобається вам ця стаття чи тема?

Відповіді:


6

Ефекти усереднення

Використання ковзного середнього фільтра згладить нерівності в сигналі. Шум стає E / N, де N - довжина ковзного середнього фільтра. Побічний ефект використання МА полягає в тому, що пікові сигнали стають ширшими і дрібнішими.

Крім того, зміниться зміст частоти сигналу. Фільтр, що рухається середнім, у часовій області - це те саме, що перетворювати сигнал частотної області за допомогою функції sinc, все розмивається.

Алгоритм виявлення піку Виявлення піку є частою проблемою в інженерних задачах 9/10. (не дуже, але від них залежить TON)

Зазвичай це робиться так:

Середній поріг

1) Look for all peaks in your signal. (i.e., a point that is larger than the two
   adjacent points
2) take this list of points and for each one of them compute:
   med_threshold = median(Peak,Width) + constantThresholmedian   where median is the
   median value of the data centered at "Peak" with Width being the number of 
   points to look at.
       a) The Width(usually written as Lambda in literature) and constantThreshold
          (usually written as C) are determined by trial and error and using the ROC
          curve (Acronym below)
3) if the peak's magnitude is above this threshold accept it as a true peak. 
   Else: Discard it, its a false peak
4) Generate a Receiver Operating Characteristic Curve(ROC) to how well the algorithm
   is performing.

Ось приклад:

suppose we have the signal X = [ 0 0 0 0 1 3 **9** 2 1 1 **2** 1 1 ] 
1) 9 and 2 are both potential peaks 
2) Lets use a window of 5 and  a threshold =2
so at 9 we have [1 3 9 1 2] -> [1 1 2 3 9]  so Median(9,5) = 2
9 > 2 +2, therefor its a peak
Lets take a look at 2: [ 1 1 2 1 1] -> [1 1 1 1 2 ] Median(2,5) = 1
2 < 1+2, therefor it is NOT a peak. 

Визначення частоти

Тепер, коли ви ефективно знайшли часову локалізацію піку, спробуйте знайти їх частоту:

1) Use the locations of the peaks to generate a pulse train
      a) this means create sum(Dirac_delta[t-L(n)]) where L(n) is the nth time that 
      you've localized through median thresholding
2) Apply FFT Algorithm
3) Look for largest peak. 

Оцінка альтернативної частоти

1) Think of this like a beat in a piece of music (I learned about thresholding by
   researching Onset Detection.
2) Compute the average time distance between detected peaks.
3) now call your results BPM or PPM (pulses per minute) 

Додаткові напрямки досліджень

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

Виявлення на початку - велика сфера дослідження пошуку музичної інформації. Її використовують для визначення часу відтворення ноти.

Зразок музики

Якщо ви вважаєте, що сигнал головної стрічки є сигналом з високою вибіркою, ви можете застосувати багато алгоритмів, які ви знайдете в цій статті:

http://www.elec.qmul.ac.uk/people/juan/Documents/Bello-TSAP-2005.pdf


"[1 3 9 1 2]" Як ви отримуєте число 2, якщо ваше вікно шириною = 5?
Спейси

Зверніть увагу, як я вишикував номери. медіана - середнє число в упорядкованому наборі. [1 1 2 3 9] <- впорядковано, середнє число - 2.
CyberMen

Подивіться на ваші номери, вони є [1 3 9 1 1]. Звідки ви взяли 2?
Спейси

@Mohammad переглянув декілька змін, працюючи над ним, видалив. Виправлено.
CyberMen

Класна подяка! Тепер, коли ви говорите «примітка» в музичному контексті, це означає одну частоту чи багато частот? Або це не має значення? Я прошу перевірити, чи це спосіб також використовуватись з іншими додатками, які є вузькосмуговими, (однотонний).
Спейси
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.