Pertimbangkan 4 sinyal gelombang berikut:
signal1 = [4.1880 11.5270 55.8612 110.6730 146.2967 145.4113 104.1815 60.1679 14.3949 -53.7558 -72.6384 -88.0250 -98.4607]
signal2 = [ -39.6966 44.8127 95.0896 145.4097 144.5878 95.5007 61.0545 47.2886 28.1277 -40.9720 -53.6246 -63.4821 -72.3029 -74.8313 -77.8124]
signal3 = [-225.5691 -192.8458 -145.6628 151.0867 172.0412 172.5784 164.2109 160.3817 164.5383 171.8134 178.3905 180.8994 172.1375 149.2719 -51.9629 -148.1348 -150.4799 -149.6639]
signal4 = [ -218.5187 -211.5729 -181.9739 -144.8084 127.3846 162.9755 162.6934 150.8078 145.8774 156.9846 175.2362 188.0448 189.4951 175.9540 147.4631 -89.9513 -154.1579 -151.0851]
Kami perhatikan bahwa sinyal 1 dan 2 terlihat serupa dan sinyal 3 dan 4 terlihat serupa.
Saya mencari algoritma yang mengambil input n sinyal dan membaginya menjadi kelompok m, di mana sinyal dalam setiap kelompok serupa.
Langkah pertama dalam algoritme seperti itu biasanya adalah menghitung vektor fitur untuk setiap sinyal: .
Sebagai contoh, kita dapat mendefinisikan vektor fitur menjadi: [width, max, max-min]. Dalam hal ini kita akan mendapatkan vektor fitur berikut:
Yang penting ketika menentukan vektor fitur adalah bahwa sinyal yang sama mendapatkan vektor fitur yang berdekatan satu sama lain dan sinyal yang berbeda mendapat vektor fitur yang berjauhan.
Pada contoh di atas kita mendapatkan:
Karena itu kita dapat menyimpulkan bahwa sinyal 2 jauh lebih mirip dengan sinyal 1 daripada sinyal 3.
Sebagai vektor fitur, saya mungkin juga menggunakan istilah dari transformasi cosinus diskrit dari sinyal. Gambar di bawah ini menunjukkan sinyal bersama dengan perkiraan sinyal oleh 5 istilah pertama dari transformasi cosinus diskrit:
Koefisien cosinus diskrit dalam hal ini adalah:
F1 = [94.2496 192.7706 -211.4520 -82.8782 11.2105]
F2 = [61.7481 230.3206 -114.1549 -129.2138 -65.9035]
F3 = [182.2051 18.6785 -595.3893 -46.9929 -236.3459]
F4 = [148.6924 -171.0035 -593.7428 16.8965 -223.8754]
Dalam hal ini kita mendapatkan:
Rasio ini tidak cukup besar untuk vektor fitur yang lebih sederhana di atas. Apakah ini berarti vektor fitur yang lebih sederhana lebih baik?
Sejauh ini saya hanya menunjukkan 2 bentuk gelombang. Plot di bawah ini menunjukkan beberapa bentuk gelombang lain yang akan menjadi input untuk algoritma seperti itu. Satu sinyal akan diekstraksi dari setiap puncak dalam plot ini, mulai dari min terdekat ke kiri puncak dan berhenti di min terdekat ke kanan puncak:
Misalnya signal3 diekstraksi dari plot ini antara sampel 217 dan 234. Signal4 diekstraksi dari plot lain.
Jika Anda penasaran; masing-masing plot tersebut sesuai dengan pengukuran suara oleh mikrofon pada posisi yang berbeda di ruang angkasa. Setiap mikrofon menerima sinyal yang sama tetapi sinyal sedikit bergeser waktu dan terdistorsi dari mikrofon ke mikrofon.
Vektor fitur dapat dikirim ke algoritma pengelompokan seperti k-means yang akan mengelompokkan sinyal dengan vektor fitur yang berdekatan satu sama lain.
Apakah ada di antara Anda yang memiliki pengalaman / saran dalam mendesain vektor fitur yang bagus dalam membedakan sinyal gelombang?
Algoritma pengelompokan mana yang akan Anda gunakan?
Terima kasih sebelumnya atas jawaban apa pun!
Jawaban:
Anda hanya ingin kriteria objektif untuk memisahkan sinyal atau penting bahwa mereka memiliki semacam kesamaan ketika didengarkan oleh seseorang? Itu tentu saja harus membatasi Anda untuk sinyal sedikit lebih lama (lebih dari 1000 sampel).
sumber