Durasi pulsa persegi yang tidak diketahui dengan aditif Gaussian white noise

8

Masalah.

Ada sinyal tersendiri f[saya](contoh di bawah).
Contoh sinyal
Diketahui, bahwaf[saya] memiliki bentuk pulsa persegi panjang dengan aditif Gaussian white noise.

f[i]=s[i]+n[i],
s[i]=α(θ[saya-saya1]-θ[saya-saya2])+c,
saya2>saya1,
saya1>N

Dimana
θ[saya] adalah fungsi langkah Heaviside,
n[saya] adalah kebisingan Gaussian putih aditif,
α adalah ketinggian pulsa persegi panjang,
saya1 adalah indeks dari sampel pertama dari pulsa persegi panjang,
saya2 adalah indeks dari sampel terakhir dari pulsa persegi panjang,
c adalah tingkat sinyal yang konstan,
N adalah parameter yang dapat disesuaikan.

Semua parameter mungkin memiliki rentang nilai yang besar.
Diperlukan untuk menemukan nilai(saya2-saya1) (durasi pulsa persegi panjang dalam sampel).

Solusi yang memungkinkan.

Saat ini, saya telah mencoba dua cara untuk menyelesaikan masalah ini.

Filter low pass dengan ambang batas.

Sebagai upaya pertama, saya telah menggunakan skema sederhana dengan filter low pass dan ambang batas.
1. Gunakan filter low pass FIR dengan frekuensi cutoff sama dengan0,05fsSebuahmhallsayang.
2. Perkirakan rata-ratam dan dispersi σ2 dari kebisingan yang disaring dari pertama Nsampel sinyal.
3. Tetapkan ambang batast=m+3σ.
4. Perkirakansaya1=minsaya(f[saya]>t).
5. Estimasi .saya2=makssaya(f[saya]>t)

masukkan deskripsi gambar di sini

Kelebihan:
1. Algoritma ini sederhana.
2. Mudah untuk menulis implementasi yang cepat.

Cons:
1. Sulit untuk memperkirakan nilai efisien dari frekuensi cutoff filter. Di satu sisi nilai rendah dapat merusak bentuk pulsa pendek. Di sisi lain, nilai besar mengurangi efek dari filtrasi.
2. Algoritma tidak menggunakan semua informasi, kami memiliki tentang sinyal.

Analisis regresi

Sebagai upaya kedua, saya telah mencoba memperkirakan urutan input sampel dengan fungsi .s[saya]

s[saya]=α(θ[saya-saya1]-θ[saya-saya2])+c , , di mana adalah parameter kecil.
θ[saya]=11+e-sayaββ

Untuk perkiraan saya telah menggunakan metode kuadrat terkecil dengan gradient descent untuk meminimalkan fungsi biaya.
1. Tetapkan nilai awal untuk , , , . 2. Lakukan gradient descent. 3. Tetapkan ambang batas . 4. Estimasi . 5. Estimasi .αcsaya1saya2

t=c+0,5α
saya1=minsaya(f[saya]>t)
saya2=makssaya(f[saya]>t)

masukkan deskripsi gambar di sini

Kelebihan:
1. Algoritma ini memberikan hasil dengan presisi yang baik.
2. Ini berfungsi untuk berbagai durasi.

Cons:
1. Ini sangat lambat.

Pertanyaan.

Bagaimanapun, saya tidak puas dengan ketepatan algoritma pertama dan dengan kecepatan yang kedua. Bagaimana Anda memecahkan masalah ini?
Apakah ada solusi klasik, yang gagal saya temukan?
Gagasan, tautan, umpan balik apa pun akan sangat dihargai.
Terima kasih.

Nikolai Popov
sumber
Apakah Anda juga perlu mengetahui probabilitas bahwa hanya noise Gaussian acak yang akan menyebabkan algoritme Anda menghasilkan "durasi" pulsa, terutama di dekat lebar minimum dan tinggi minimum yang Anda izinkan? Atau apakah denyut nadi a-priori diketahui ada dan dalam parameter yang diizinkan?
hotpaw2
@ hotpaw2 Denyut nadi a-priori diketahui ada dan dalam parameter yang diizinkan. Jika sinyal tidak mengandung pulsa, maka perilaku algoritma mungkin tidak terdefinisi.
Nikolai Popov

Jawaban:

5

Anda menginginkan metode yang menghilangkan kebisingan sambil mempertahankan tepian. Ini tidak dapat dicapai dengan baik dengan penyaringan linier, seperti yang Anda perhatikan sendiri. Saya tahu dua pendekatan yang mungkin cocok untuk masalah Anda. Yang pertama adalah penyaringan median , di mana sampel di dalam jendela diganti dengan median mereka. Plot berikut menunjukkan hasil penyaringan median dengan panjang jendela 25 sampel (merah):

masukkan deskripsi gambar di sini

Pendekatan lainnya, yang lebih kompleks, adalah denoising variasi total , yang bekerja sangat baik untuk sinyal konstan piecewise. Ada deskripsi yang sangat baik tentang variasi total denoising termasuk kode Matlab yang tersedia: tautan .

Matt L.
sumber
Itu sangat membantu. Dan saya senang membaca artikel dan bermain dengan denoising TV. Terima kasih.
Nikolai Popov
1

Saya tahu ini sudah sangat tua , dan @Matt L. sejak lama memberikan jawaban yang bagus dan informatif. Saya tidak tahu bahwa ada variasi total denoising, jadi saya belajar sesuatu yang sangat berguna. Oleh karena itu, saya memutakhirkan baik pertanyaan maupun jawaban dan ingin memberikan sedikit sesuatu, seperti apa adanya, kembali ke situs. Ide dasarnya adalah menggunakan versi digital sederhana dari RC LPF lama dan sangat mengurangi 'konstanta waktu' ketika sebuah langkah terjadi. Kemudian, setelah langkah, sangat meningkatkan 'konstanta waktu'. NB 'Konstanta waktu' tidak benar-benar akan konstan, seperti yang akan dilihat di bawah ini.

Gambar di bawah ini menunjukkan upaya saya untuk meniru contoh pulsa persegi berisik umum OP dan bagaimana filter low pass 'derivatif timbal balik' (selanjutnya dinotasikan RD-LPF) melakukan:

Turunan LPF timbal balik

RD-LPF sederhana y[saya]=SEBUAHy[saya-1]+(1-SEBUAH)x[saya]dimana SEBUAH=exhal(-K|y[saya-1]-x[saya]|) dan saya menggunakan K=0,2. Pulsa persegi panjang bersih memiliki satuan amplitudo, dimulai pada t = 3 dan lebar pulsa adalah 3. Gaussian white additive white memilikiμ=0 dan σ=0,3.

Gambar berikut membandingkan keluaran RD-LPF (jejak merah) dengan (sesuai jawaban Matt L.) dengan 25 poin bergerak keluaran filter median (jejak biru):

RD-LPF vs. Mov Med 25 pt

Saya tidak mengatakan saya akan pernah menggunakan RD-LPF untuk hal yang serius, tetapi saya ingin tahu apakah akan hancur dalam perbandingan kecil ini. Jelas, bukan itu masalahnya.

Ed V
sumber