Merancang vektor fitur untuk membedakan berbagai bentuk gelombang sonik

10

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]

Sinyal

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: .Fsaya

Sebagai contoh, kita dapat mendefinisikan vektor fitur menjadi: [width, max, max-min]. Dalam hal ini kita akan mendapatkan vektor fitur berikut:

F1=[13,146,245]

F2=[15,145,223]

F3=[18,181,406]

F4=[18,189,408]

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:

|F2-F1|=22.1,|F3-F1|=164.8

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: Transformasi cosine

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:

|F2-F1|=141.5,|F3-F1|=498.0

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:Jejak

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!

Andy
sumber
Bagaimana dengan produk titik-baik dari sinyal input dengan salah satu templat M? Anda akan mengambil salah satu yang memiliki kesalahan-kuadrat terkecil. Bagi saya itu akan menjadi tempat saya memulai. Pernahkah Anda mencoba sesuatu seperti itu?
Spacey
Hai Mohammad! Masalahnya adalah saya tidak tahu bentuk gelombang sebelumnya. Saya tertarik pada semua sinyal di sekitar puncak dan mereka mungkin memiliki banyak bentuk berbeda yang saya tidak tahu sebelumnya.
Andy
Apa alasan untuk mencoba menemukan fitur baru untuk mengkarakterisasi vektor ini daripada menggunakannya secara langsung sebagai "fitur"? (Mereka harus memiliki panjang yang sama). Dalam kasus k-means mengelompokkan "jarak" antara vektor-vektor kecil yang diekstraksi pada minima dari sinyal yang diperoleh pertama-tama akan dihitung dan kemudian algoritma akan mencoba untuk menemukan pengelompokan mereka ke dalam k-set varians minimum yang merupakan apa Anda tampaknya setelah.
A_A
Hai A_A! 1. Dimensi vektor dikurangi. Dalam hal sinyal 3 dari 18 hingga 5 saat menggunakan koefisien cosinus diskrit. 2. Penghalusan sedang berlangsung. Sinyal-sinyal berisik, dan saya tidak tertarik dengan fluktuasi yang cepat.
Andy
3
Orang-orang yang belajar mesin berpendapat bahwa Anda tidak boleh membuang informasi - sistem harus belajar tentang segalanya. Tentu saja, mereka adalah orang yang sama yang mendesain algoritma yang akan membutuhkan jutaan tahun untuk dijalankan, tetapi intinya bukan tanpa prestasi. Intinya, Anda ingin membuang informasi sesedikit mungkin dan mempelajari apa yang tersisa. Ini menurut saya sebagai masalah yang harus dilakukan dalam kerangka Bayesian (terus terang, karena sebagian besar pemrosesan sinyal harus saat ini), meskipun itu tidak berarti bekerja di luar fitur yang menonjol tidak penting.
Henry Gomersall

Jawaban:

2

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).

lefteror
sumber