Saya memiliki sampel terpisah dari sinyal seismik : y [ n ]
Saya ingin mencari maxima lokal di sinyal.
Tes naif untuk jika adalah maksimum adalah: y [ n ] : m a x i m a jika y [ n ] > y [ n - 1 ] dan y [ n ] > y [ n + 1 ]
Namun maxima mungkin terletak di antara sampel, misalnya mungkin ada maksimum di .
Untuk menemukan maksimum di antara sampel, saya percaya bahwa saya perlu menginterpolasi .
- Bagaimana cara menemukan maxima menggunakan interpolasi?
- Apa bentuk interpolasi yang harus saya gunakan?
Seperti yang Anda lihat sinyal saya tidak terlalu berisik, namun akan lebih baik jika metode ini juga melakukan sedikit penyaringan sehingga maxima melebihi treshold dan memiliki lebar tertentu (tidak ada paku).
Namun masalah terbesar saya adalah hanya untuk menemukan puncak di antara sampel. Ada saran untuk cara yang baik untuk melakukan ini?
Terima kasih sebelumnya atas jawaban apa pun!
Jawaban:
Mendapatkan resolusi sub-sampel
Solusi yang sangat murah (dalam hal ukuran kode) hanya untuk mengganti sinyal Anda. Di matlab, ini bisa dilakukan dengan
interp(y ,ratio)
. Solusi yang sedikit lebih rumit terdiri dari pendeteksian puncak secara naif; dan untuk setiap puncak, paskan parabola melalui y [puncak - 1], y [puncak], y [puncak + 1]; kemudian gunakan titik di mana parabola ini maksimal sebagai posisi puncak sebenarnya.Mengenai deteksi puncak
Banyak teknik yang membantu:
Semua ini dapat diimplementasikan dengan sangat efisien di Matlab dengan beberapa pass nlfilter.
sumber
Coba pendeteksi puncak lossy:
di mana "a" adalah angka yang lebih kecil dari 1 yang mengontrol seberapa cepat detektor meluruh. Ini menentukan seberapa dekat puncak tetangga bisa tanpa berciuman menjadi satu pun. Kemudian lakukan deteksi ambang batas.
sumber