Saya memiliki mikrofon yang mengukur suara dari waktu ke waktu di berbagai posisi di ruang angkasa. Suara yang direkam semua berasal dari posisi yang sama di ruang angkasa tetapi karena jalur yang berbeda dari titik sumber ke setiap mikrofon; sinyal akan (waktu) bergeser dan terdistorsi. Pengetahuan apriori telah digunakan untuk mengkompensasi pergeseran waktu sebaik mungkin tetapi masih ada pergeseran waktu dalam data. Semakin dekat posisi pengukuran semakin mirip sinyal.
Saya tertarik untuk secara otomatis mengklasifikasikan puncak. Maksud saya, saya mencari algoritma yang "melihat" dua sinyal mikrofon dalam plot di bawah ini dan "mengenali" dari posisi dan bentuk gelombang bahwa ada dua suara utama dan melaporkan posisi waktu mereka:
sound 1: sample 17 upper plot, sample 19 lower plot,
sound 2: sample 40 upper plot, sample 38 lower plot
Untuk melakukan ini, saya berencana untuk melakukan ekspansi Chebyshev di sekitar setiap puncak dan menggunakan vektor koefisien Chebyshev sebagai input ke algoritma cluster (k-means?).
Sebagai contoh di sini adalah bagian-bagian dari sinyal waktu yang diukur pada dua posisi terdekat (biru) didekati dengan 5 suku seri Chebyshev di atas 9 sampel (merah) di sekitar dua puncak (lingkaran biru):
Perkiraannya cukup bagus :-).
Namun; koefisien Chebyshev untuk plot atas adalah:
Clu = -1.1834 85.4318 -39.1155 -33.6420 31.0028
Cru =-43.0547 -22.7024 -143.3113 11.1709 0.5416
Dan koefisien Chebyshev untuk plot yang lebih rendah adalah:
Cll = 13.0926 16.6208 -75.6980 -28.9003 0.0337
Crl =-12.7664 59.0644 -73.2201 -50.2910 11.6775
Saya ingin melihat Clu ~ = Cll dan Cru ~ = Crl, tapi sepertinya tidak demikian :-(.
Mungkin ada dasar ortogonal lain yang lebih cocok dalam kasus ini?
Adakah saran tentang bagaimana melanjutkan (saya menggunakan Matlab)?
Terima kasih sebelumnya atas jawaban apa pun!
Jawaban:
Sepertinya Anda memiliki satu sumber, x [n], dan beberapa sinyal mikrofon . Dengan asumsi bahwa jalur propagasi Anda dari sumber ke mikrofon cukup linier dan tidak berbeda waktu, Anda dan cukup memodelkan jalur tersebut sebagai fungsi transfer. Jadi pada dasarnya Anda memiliki manayi[n]
Jika Anda dapat mengukur fungsi transfer, Anda dapat memfilter setiap sinyal mic dengan kebalikan dari fungsi transfer tersebut. Ini akan membuat sinyal mic jauh lebih mirip dan mengurangi efek penyaringan.
Alternatifnya adalah menggabungkan semua sinyal mic menjadi beamformer yang mengoptimalkan pickup dari sumber tetapi menolak yang lainnya. Ini juga harus menyediakan versi yang cukup "bersih" dari sinyal sumber.
sumber