Lissage du signal / détection des bosses dans un flux de données

11

(EDIT: Cette question découle de l' extraction des données de carte à bande magnétique binaire à partir de WAV brut )

Voici mon signal (ligne supérieure) et un filtre IIR de base appliqué (ligne inférieure)

entrez la description de l'image ici

(EDIT: ma tâche est de diviser le signal en binaire 0 (fréquence F) et binaire 1 (fréquence 2F) - c'est pourquoi il est appelé F2F. Je dois donc le traiter de manière à ne garantir aucun faux pics. la capture d'écran donne un aspect trivial, il y a un problème potentiel d'obtenir un double pic, et aussi d'obtenir des faux positifs dans le creux entre les pics réels.)

Ma question est, quelles méthodes sont disponibles pour lisser ce signal? L'IIF est-il mon meilleur pari?

Je peux voir au moins trois possibilités:

  • IIR y [n] = 0,9 * y [n-1] + 0,1 * x [n] où y [x] = 0 lorsque x <0

  • Moyenne mobile / fenêtrée - placez une courbe de Bell avec une aire de 1,0 sur les environs disons w = 10 échantillons de chaque côté et intégrez bellSmooth (x) = intégral [xw, x + w] {bell (k) .samp (k)} dk

  • Déterminer la fréquence attendue et la FFT / supprimer les bacs d'ordre supérieur / inverser la FFT

J'ai peut-être répondu à ma propre question, mais elle est probablement incomplète et je suis sûr que j'utilise la mauvaise terminologie. De plus, je ne peux pas vraiment prédire les avantages et les inconvénients. La dernière méthode est moins intéressante car elle nécessite la connaissance de la fréquence de base du signal. Mais il en va de même pour la deuxième méthode; Je dois choisir une longueur de fenêtre appropriée.

Existe-t-il d'autres méthodes?

P i
la source
6
Quelles caractéristiques du signal d'origine essayez-vous de conserver / mesurer? Par exemple, la synchronisation entre les points de pointe, la hauteur du pic, la durée au-dessus d'un seuil, autre chose?
Martin Thompson
Le timing entre les pics ... et même cela n'a pas besoin d'être trop précis - c'est un signal F2F (je vais modifier la question pour référencer la source du signal et donner un contexte)
P i
Est-ce pour le traitement en ligne ou hors ligne?
Mon sujet de thèse est le lissage du bruit dans le flux de données. Aimez-vous cet article ou ce sujet?

Réponses:

6

Effets de la moyenne

L'utilisation d'un filtre à moyenne mobile atténue les irrégularités du signal. Le bruit devient E / N où N est la longueur du filtre moyen mobile. L'effet secondaire de l'utilisation d'un MA est que les crêtes de signal deviennent plus larges et moins profondes.

De plus, le contenu en fréquence du signal changera. Un filtre à moyenne mobile dans le domaine temporel est la même chose que la convolution du signal du domaine fréquentiel par une fonction sinc tout est taché.

Algorithme de détection des pics La détection des pics est un problème courant dans les problèmes d'ingénierie 9/10. (pas vraiment, mais une tonne en dépend)

C'est généralement ce qui est fait:

Seuil médian

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.

Voici un exemple:

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. 

Déterminer la fréquence

Maintenant que vous avez effectivement trouvé la localisation temporelle du pic, essayez de trouver leur fréquence:

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. 

Estimation de fréquence alternative

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) 

Avenues de recherche supplémentaires

Bien que vous puissiez être satisfait du signal en pointe tel quel, il existe des algorithmes qui sont appliqués à une toute autre bête de problèmes appelée détection de début.

La détection de début est un grand domaine de la recherche sur la récupération d'informations musicales. Son utilisé pour déterminer quand une note est jouée.

Échantillon de musique d'un début

Si vous considérez votre signal de tête de bande comme un signal hautement échantillonné, vous pouvez appliquer bon nombre des algorithmes que vous trouverez dans cet article:

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

CyberMen
la source
"[1 3 9 1 2]" Comment obtenez-vous le nombre 2 si votre fenêtre est largeur = 5?
Spacey
Remarquez comment j'ai aligné les chiffres. la médiane est le nombre du milieu dans un ensemble ordonné. [1 1 2 3 9] <- commandé, le numéro du milieu est 2.
CyberMen
Regardez vos chiffres, ils sont [1 3 9 1 1]. D'où avez-vous obtenu les 2?
Spacey
@Mohammad a subi quelques modifications en y travaillant et a été supprimé. Fixé.
CyberMen
Cool merci! Maintenant, quand vous dites «note» dans le contexte musical, cela signifie-t-il une seule fréquence ou plusieurs fréquences? Ou n'est-ce pas important? Je demande si c'est un moyen à utiliser également avec d'autres applications à bande étroite (ton unique).
Spacey