Sinyal smoothing / pendeteksi benjolan dalam aliran data

11

(EDIT: Pertanyaan ini mengikuti dari Mengekstraksi Binary Magnetic-Strip Card Data dari WAV mentah )

Ini adalah sinyal saya (garis atas) dan filter IIR dasar diterapkan (garis bawah)

masukkan deskripsi gambar di sini

(EDIT: tugas saya adalah memecah sinyal menjadi biner 0 (frekuensi F) dan biner 1 (frekuensi 2F) - itu sebabnya disebut F2F. Jadi saya perlu memprosesnya sedemikian rupa sehingga tidak menjamin puncak palsu. tangkapan layar membuatnya tampak sepele, ada potensi masalah mendapatkan puncak ganda, dan juga mendapatkan positif palsu di palung antara puncak nyata.)

Pertanyaan saya adalah, metode apa yang tersedia untuk menghaluskan sinyal ini? Apakah IIR taruhan terbaik saya?

Saya dapat melihat setidaknya tiga kemungkinan:

  • IIR y [n] = 0,9 * y [n-1] + 0,1 * x [n] di mana y [x] = 0 saat x <0

  • Rata-rata bergerak / berjendela - tempatkan kurva Bell dengan area 1.0 di sekitarnya, katakanlah w = 10 sampel setiap sisi dan integrasikan bellSmooth (x) = integral [xw, x + w] {bell (k) .samp (k)} dk

  • Tentukan frekuensi yang diharapkan dan FFT / hapus nampan pesanan lebih tinggi / FFT terbalik

Saya mungkin telah menjawab pertanyaan saya sendiri, tetapi mungkin ini tidak lengkap dan saya yakin saya menggunakan terminologi yang salah. Saya juga tidak bisa memprediksi pro dan kontra. Metode terakhir kurang menarik karena membutuhkan pengetahuan tentang frekuensi sinyal dasar. Tapi begitu juga metode kedua; Saya harus memilih panjang jendela yang sesuai.

Apakah ada metode lain?

P i
sumber
6
Apa karakteristik sinyal asli yang Anda coba pertahankan / ukur? Misalnya, pengaturan waktu antara titik puncak, tinggi puncak, jumlah waktu di atas ambang batas, sesuatu yang lain?
Martin Thompson
Pengaturan waktu di antara puncak ... dan bahkan ini tidak perlu terlalu akurat - ini adalah sinyal F2F (Saya akan mengubah pertanyaan untuk merujuk sumber sinyal dan memberikan konteks)
P
Apakah ini untuk pemrosesan online atau offline?
Topik tesis saya adalah perataan suara dalam aliran data. Apakah Anda suka artikel atau topik ini?

Jawaban:

6

Efek rata-rata

Menggunakan filter moving average akan memuluskan penyimpangan dalam sinyal. Kebisingan menjadi E / N di mana N adalah panjang filter rata-rata bergerak. Efek samping dari menggunakan MA adalah bahwa puncak sinyal menjadi lebih luas dan dangkal.

Selain itu, konten frekuensi sinyal akan berubah. Filter rata-rata bergerak dalam domain waktu adalah hal yang sama seperti menggabungkan sinyal domain frekuensi dengan fungsi sinc yang semuanya rusak.

Algoritma Deteksi Puncak Deteksi puncak adalah masalah umum pada 9/10 masalah teknik. (tidak juga, tapi satu TON tergantung pada mereka)

Biasanya ini yang dilakukan:

Median Thresholding

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.

Berikut ini sebuah contoh:

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. 

Menentukan Frekuensi

Sekarang Anda telah secara efektif menemukan lokalisasi waktu puncak mencoba menemukan frekuensi mereka:

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. 

Estimasi Frekuensi Alternatif

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) 

Jalan Tambahan Penelitian

Meskipun Anda mungkin puas dengan sinyal memuncak seperti ini, ada algoritma yang diterapkan untuk binatang yang sama sekali berbeda masalah yang disebut Deteksi Serangan.

Deteksi Onset adalah bidang besar dalam Penelitian Pengambilan Informasi Musik. Ini digunakan untuk menentukan kapan not dimainkan.

Sampel Musik dari Onset

Jika Anda menganggap sinyal head tape Anda sebagai sinyal yang sangat sampel, Anda dapat menerapkan banyak algoritma yang akan Anda temukan dalam makalah ini:

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

CyberMen
sumber
"[1 3 9 1 2]" Bagaimana Anda mendapatkan angka 2 jika jendela Anda lebar = 5?
Spacey
Perhatikan bagaimana saya berbaris angka. median adalah angka tengah dalam set yang dipesan. [1 1 2 3 9] <- dipesan, nomor tengah adalah 2.
CyberMen
Lihatlah angka-angka Anda, yaitu [1 3 9 1 1]. Dari mana Anda mendapatkan 2?
Spacey
@Mohammad mengalami beberapa pengeditan saat mengerjakannya, terhapus. Tetap.
CyberMen
Keren Terimakasih! Sekarang, ketika Anda mengatakan 'note' dalam konteks musik, apakah itu berarti frekuensi tunggal, atau banyak frekuensi? Atau tidak masalah? Saya meminta untuk melihat apakah ini adalah cara untuk juga digunakan dengan beberapa aplikasi lain yang sempit-band, (nada tunggal).
Spacey