Wygładzanie sygnału / wykrywanie nierówności w strumieniu danych

11

(EDYCJA: To pytanie wynika z ekstrakcji danych binarnych kart magnetycznych z surowego WAV )

Oto mój sygnał (górna linia) i zastosowany podstawowy filtr IIR (dolny wiersz)

wprowadź opis zdjęcia tutaj

(EDYCJA: moim zadaniem jest rozbicie sygnału na binarny 0 (częstotliwość F) i binarny 1 (częstotliwość 2F) - dlatego nazywa się F2F. Więc muszę go przetworzyć w taki sposób, aby nie było żadnych fałszywych pików. zrzut ekranu sprawia, że ​​wygląda to trywialnie, istnieje potencjalny problem uzyskania podwójnego piku, a także uzyskania fałszywych wyników pozytywnych w dolinie między prawdziwymi pikami).

Moje pytanie brzmi: jakie metody są dostępne do wygładzenia tego sygnału? Czy IIR to mój najlepszy zakład?

Widzę co najmniej trzy możliwości:

  • IIR y [n] = 0,9 * y [n-1] + 0,1 * x [n] gdzie y [x] = 0 gdy x <0

  • Średnia ruchoma / okienkowa - umieść krzywą dzwonka o powierzchni 1,0 nad otaczającym powiedzmy w = 10 próbek z każdej strony i zintegruj bellSmooth (x) = całka [xw, x + w] {bell (k) .samp (k)} dk

  • Określ oczekiwaną częstotliwość i FFT / usuń pojemniki wyższego rzędu / odwróć FFT

Mogłem odpowiedzieć na własne pytanie, ale prawdopodobnie jest to niekompletne i jestem pewien, że używam złej terminologii. Nie potrafię też przewidzieć zalet i wad. Ostatnia metoda jest mniej atrakcyjna, ponieważ wymaga znajomości podstawowej częstotliwości sygnału. Ale potem robi to druga metoda; Muszę wybrać odpowiednią długość okna.

Czy są jakieś inne metody?

Liczba Pi
źródło
6
Jakie cechy oryginalnego sygnału próbujesz zachować / zmierzyć? Na przykład czas między punktami szczytowymi, wysokość szczytu, ilość czasu powyżej progu, coś jeszcze?
Martin Thompson,
Czas pomiędzy pikami ... a nawet to nie musi być zbyt dokładne - jest to sygnał F2F (zmienię pytanie, aby odwołać się do źródła sygnału i podać kontekst)
P i
Czy dotyczy to przetwarzania online czy offline?
Tematem mojej pracy dyplomowej jest wygładzanie szumów w strumieniu danych. Czy podoba Ci się ten artykuł lub temat?

Odpowiedzi:

6

Efekty uśredniania

Zastosowanie filtra średniej ruchomej wygładzi nieregularności w sygnale. Szum staje się E / N, gdzie N jest długością filtra średniej ruchomej. Efektem ubocznym zastosowania MA jest to, że piki sygnału stają się szersze i płytsze.

Ponadto zawartość częstotliwości sygnału ulegnie zmianie. Filtr średniej ruchomej w dziedzinie czasu jest tym samym, co splatanie sygnału w dziedzinie częstotliwości za pomocą funkcji sinus, wszystko zostaje rozmazane.

Algorytm detekcji pików Detekcja pików jest częstym problemem w problemach technicznych 9/10. (nie do końca, ale ton zależy od nich)

Zazwyczaj tak się dzieje:

Próg progowy

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.

Oto przykład:

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. 

Określanie częstotliwości

Teraz, gdy skutecznie znalazłeś lokalizację szczytu w czasie, spróbuj znaleźć ich częstotliwość:

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. 

Alternatywne oszacowanie częstotliwości

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) 

Dodatkowe kierunki badań

Chociaż sygnał szczytowy może być satysfakcjonujący, istnieją algorytmy, które są stosowane do całej innej bestii problemów zwanych wykrywaniem Onset.

Wykrywanie początku jest dużym obszarem badań związanych z wyszukiwaniem informacji muzycznych. Służy do określania, kiedy nuta jest odtwarzana.

Próbka muzyczna początku

Jeśli myślisz o sygnale głowicy taśmy jako silnie próbkowanym sygnale, możesz zastosować wiele algorytmów, które można znaleźć w tym artykule:

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

CyberMen
źródło
„[1 3 9 1 2]” Jak uzyskać liczbę 2, jeśli okno ma szerokość = 5?
Spacey
Zauważ, jak ustawiłem liczby. mediana jest środkową liczbą w uporządkowanym zestawie. [1 1 2 3 9] <- zamówiony, środkowa liczba to 2.
CyberMen
Spójrz na swoje liczby, są to [1 3 9 1 1]. Skąd masz 2?
Spacey,
@Mohammad przeszedł kilka zmian podczas pracy, został usunięty. Naprawiony.
CyberMen
Fajne dzięki! Kiedy mówisz „nuta” w kontekście muzycznym, czy to oznacza pojedynczą częstotliwość, czy wiele częstotliwości? Czy to nie ma znaczenia? Pytam, czy jest to sposób, aby można go również stosować z niektórymi innymi aplikacjami, które są wąskopasmowe, (pojedynczy ton).
Spacey