Ефекти усереднення
Використання ковзного середнього фільтра згладить нерівності в сигналі. Шум стає 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