Progettazione di un vettore caratteristica per discriminare tra diverse forme d'onda soniche


10

Considera i 4 seguenti segnali di forma d'onda:

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]

segnali

Notiamo che i segnali 1 e 2 sembrano simili e che i segnali 3 e 4 sembrano simili.

Sto cercando un algoritmo che prenda come input n segnali e li divida in m gruppi, in cui i segnali all'interno di ciascun gruppo sono simili.

Il primo passo in un tale algoritmo sarebbe di solito calcolare un vettore di caratteristiche per ciascun segnale: .Fio

Ad esempio, potremmo definire il vettore della funzione come: [larghezza, max, max-min]. Nel qual caso otterremmo i seguenti vettori di funzionalità:

F1=[13,146,245]

F2=[15,145,223]

F3=[18,181,406]

F4=[18,189,408]

La cosa importante quando si decide su un vettore di caratteristiche è che segnali simili ottengono vettori di caratteristiche che sono vicini tra loro e segnali diversi ottengono vettori di caratteristiche che sono distanti.

Nell'esempio sopra otteniamo:

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

Potremmo quindi concludere che il segnale 2 è molto più simile al segnale 1 rispetto al segnale 3.

Come vettore caratteristica potrei anche usare i termini della trasformata discreta del coseno del segnale. La figura seguente mostra i segnali insieme all'approssimazione dei segnali con i primi 5 termini della trasformata discreta del coseno: Il coseno si trasforma

I coefficienti di coseno discreti in questo caso sono:

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]

In questo caso otteniamo:

|F2-F1|=141,5,|F3-F1|=498.0

Il rapporto non è abbastanza grande come per il vettore di funzionalità più semplice sopra. Questo significa che il vettore di funzionalità più semplice è migliore?

Finora ho mostrato solo 2 forme d'onda. Il diagramma seguente mostra alcune altre forme d'onda che sarebbero l'input per un tale algoritmo. Un segnale verrebbe estratto da ciascun picco in questo diagramma, iniziando dal minimo più vicino alla sinistra del picco e fermandosi al minimo più vicino alla destra del picco:Tracciare

Ad esempio, Signal3 è stato estratto da questo diagramma tra il campione 217 e 234. Signal4 è stato estratto da un altro diagramma.

Nel caso tu sia curioso; ciascuna di queste trame corrisponde a misurazioni del suono tramite microfoni in diverse posizioni nello spazio. Ogni microfono riceve gli stessi segnali ma i segnali sono leggermente spostati nel tempo e distorti da microfono a microfono.

I vettori di funzionalità potrebbero essere inviati a un algoritmo di clustering come k-medie che raggrupperebbe i segnali con vettori di funzionalità vicini l'uno all'altro.

Qualcuno di voi ha qualche esperienza / consiglio sulla progettazione di un vettore di caratteristiche che sarebbe efficace nel discriminare i segnali delle forme d'onda?

Inoltre quale algoritmo di clustering useresti?

Grazie in anticipo per eventuali risposte!


Che ne dite del buon punto 'prodotto di un segnale di input con uno dei modelli M? Prendi quello che ha l'errore meno quadrato. Quello per me sarebbe dove avrei iniziato. Hai mai provato qualcosa del genere?
Spacey,

Ciao Mohammad! Il problema è che non conosco in anticipo le forme d'onda. Sono interessato a tutti i segnali intorno ai picchi e possono avere molte forme diverse che non conosco in anticipo.
Andy,

Qual è il motivo per cercare di trovare nuove funzionalità per caratterizzare questi vettori piuttosto che usarli direttamente come "caratteristiche"? (Dovranno però avere la stessa lunghezza). Nel caso dei k-cluster, verranno prima calcolate le "distanze" tra quei piccoli vettori estratti ai minimi dei segnali acquisiti e quindi l'algoritmo proverà a trovarne un raggruppamento in k-set di varianza minima che è ciò che sembra che tu stia cercando.
A_A

Ciao A_A! 1. Le dimensioni dei vettori sono ridotte. Nel caso del segnale 3 da 18 a 5 quando si usano i coefficienti di coseno discreti. 2. È in corso un livellamento. I segnali sono rumorosi e non mi interessano le fluttuazioni rapide.
Andy,

3
Le persone che apprendono automaticamente, sostengono che non dovresti mai buttare via informazioni: il sistema dovrebbe imparare tutto. Certo, sono le stesse persone che progettano algoritmi che impiegheranno un milione di anni per funzionare, ma il punto non è privo di merito. In sostanza, vuoi buttare via il minor numero di informazioni possibile e conoscere ciò che resta. Questo mi sembra un problema che dovrebbe essere fatto in un quadro bayesiano (francamente, poiché la maggior parte dell'elaborazione del segnale dovrebbe essere al giorno d'oggi), anche se ciò non significa che elaborare le caratteristiche salienti non sia importante.
Henry Gomersall,

Risposte:


2

Volete solo criteri oggettivi per separare i segnali o è importante che abbiano una sorta di somiglianza quando ascoltati da qualcuno? Ciò ovviamente dovrebbe limitarti a segnali un po 'più lunghi (più di 1000 campioni).

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.