Сглаживающий сигнал / обнаружение неровностей в потоке данных


11

(РЕДАКТИРОВАТЬ: Этот вопрос следует из извлечения двоичных данных карты магнитной полосы из необработанного WAV )

Вот мой сигнал (верхняя строка) и примененный базовый фильтр БИХ (нижняя строка)

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

(РЕДАКТИРОВАТЬ: моя задача состоит в том, чтобы разбить сигнал на двоичный 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

  • Определить ожидаемую частоту и БПФ / удалить ячейки более высокого порядка / обратное БПФ

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

Есть ли другие методы?


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

Время между пиками ... и даже это не должно быть слишком точным - это сигнал F2F (я исправлю вопрос, чтобы сослаться на источник сигнала и дать контекст)
P i

Это для онлайн или оффлайн обработки?

Тема моей диссертации - сглаживание шума в потоке данных. Вам нравится эта статья или тема?

Ответы:


6

Эффекты усреднения

Использование фильтра скользящего среднего сгладит неровности сигнала. Шум становится E / N, где N - длина фильтра скользящего среднего. Побочным эффектом использования МА является то, что пики сигнала становятся шире и мельче.

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

Алгоритм обнаружения пиков Обнаружение пиков является распространенной проблемой в технических проблемах 9/10. (не совсем, но от них зависит ТОННА)

Обычно это то, что делается:

Срединный порог

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?
Spacey

Обратите внимание, как я выстроил числа. Медиана - это среднее число в упорядоченном наборе. [1 1 2 3 9] <- заказано, среднее число - 2.
CyberMen

Посмотрите на свои номера, они [1 3 9 1 1]. Откуда ты взял 2?
Спейси

@ Мохаммед прошел несколько правок, работая над этим, был удален. Исправлена.
CyberMen

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