Livellamento del segnale / rilevamento dei dossi in un flusso di dati


11

(EDIT: questa domanda deriva dall'estrazione dei dati binari della scheda a banda magnetica dal WAV grezzo )

Ecco il mio segnale (riga superiore) e un filtro IIR di base applicato (riga inferiore)

inserisci qui la descrizione dell'immagine

(EDIT: il mio compito è di suddividere il segnale in binario 0 (frequenza F) e binario 1 (frequenza 2F) - ecco perché si chiama F2F. Quindi devo elaborarlo in modo tale da non garantire falsi picchi. lo screenshot lo fa sembrare banale, c'è un potenziale problema di ottenere un doppio picco e anche di ottenere falsi positivi nella depressione tra picchi reali.)

La mia domanda è: quali metodi sono disponibili per attenuare questo segnale? IIR è la mia migliore scommessa?

Vedo almeno tre possibilità:

  • IIR y [n] = 0.9 * y [n-1] + 0.1 * x [n] dove y [x] = 0 quando x <0

  • Media mobile / finestrata: posiziona una curva di Bell con area 1.0 sull'area circostante diciamo w = 10 campioni per lato e integra bellSmooth (x) = integral [xw, x + w] {bell (k) .samp (k)} dk

  • Determinare la frequenza prevista e FFT / rimuovere i bin di ordine superiore / FFT inversa

Potrei aver risposto alla mia domanda, ma probabilmente questo è incompleto e sono sicuro che sto usando una terminologia sbagliata. Inoltre, non posso davvero prevedere i pro e i contro. L'ultimo metodo è meno attraente in quanto richiede la conoscenza della frequenza del segnale di base. Ma poi anche il secondo metodo; Devo scegliere una lunghezza della finestra appropriata.

Ci sono altri metodi?


6
Quali caratteristiche del segnale originale stai cercando di preservare / misurare? Ad esempio, tempismo tra punti di picco, altezza del picco, quantità di tempo al di sopra di una soglia, qualcos'altro?
Martin Thompson,

Tempismo tra i picchi ... e anche questo non deve essere troppo preciso - è un segnale F2F (modificherò la domanda per fare riferimento alla fonte del segnale e dare un contesto)
P i

È per l'elaborazione online o offline?

Il mio argomento di tesi è il noise smoothing nel flusso di dati. Ti piace questo articolo o argomento?

Risposte:


6

Effetti della media

L'uso di un filtro a media mobile appianerà le irregolarità del segnale. Il rumore diventa E / N dove N è la lunghezza del filtro della media mobile. L'effetto collaterale dell'utilizzo di un MA è che i picchi di segnale diventano più ampi e meno profondi.

Inoltre, il contenuto in frequenza del segnale cambierà. Un filtro a media mobile nel dominio del tempo è la stessa cosa che avvolge il segnale del dominio della frequenza con una funzione sinc che tutto viene macchiato.

Algoritmo di rilevamento di picco Il rilevamento di picco è un problema comune in problemi di ingegneria 9/10. (non proprio, ma un TON dipende da loro)

In genere questo è ciò che viene fatto:

Soglia mediana

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.

Ecco un esempio:

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. 

Determinazione della frequenza

Ora che hai effettivamente trovato la localizzazione temporale del picco, prova a trovare la loro frequenza:

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. 

Stima della frequenza alternativa

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) 

Ulteriori percorsi di ricerca

Mentre potresti essere soddisfatto dal segnale di picco così com'è, ci sono algoritmi che vengono applicati a una serie di problemi completamente diversa chiamata Rilevazione dell'insorgenza.

Onset Detection è una grande area nella ricerca sul recupero di informazioni musicali. Viene utilizzato per determinare quando viene suonata una nota.

Campione musicale di un esordio

Se pensi al segnale della testina come un segnale altamente campionato, puoi applicare molti degli algoritmi che troverai in questo documento:

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


"[1 3 9 1 2]" Come stai ottenendo il numero 2 se la tua finestra è larghezza = 5?
Spacey,

Nota come ho allineato i numeri. la mediana è il numero medio in un set ordinato. [1 1 2 3 9] <- ordinato, il numero medio è 2.
CyberMen

Guarda i tuoi numeri, sono [1 3 9 1 1]. Da dove hai preso i 2?
Spacey,

@Mohammad ha subito alcune modifiche mentre ci lavorava, è stato eliminato. Fisso.
CyberMen,

Figo, grazie! Ora, quando dici "nota" nel contesto musicale, significa singola frequenza o molte frequenze? O non importa? Sto chiedendo di vedere se questo è un modo per essere utilizzato anche con alcune altre applicazioni a banda stretta (tono singolo).
Spacey,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.