Come posso classificare automaticamente i picchi di segnali misurati in diverse posizioni?


10

Ho dei microfoni che misurano il suono nel tempo in diverse posizioni nello spazio. I suoni che vengono registrati provengono tutti dalla stessa posizione nello spazio ma a causa dei diversi percorsi dal punto sorgente a ciascun microfono; il segnale sarà (tempo) spostato e distorto. Conoscenza a priori è stata utilizzata per compensare il più possibile i turni di tempo, ma nei dati esiste ancora qualche spostamento di tempo. Più vicine sono le posizioni di misurazione, più simili sono i segnali.

Sono interessato a classificare automaticamente i picchi. Con questo intendo che sto cercando un algoritmo che "guarda" i due segnali del microfono nella trama sottostante e "riconosca" dalla posizione e dalla forma d'onda che ci sono due suoni principali e riporta le loro posizioni temporali:

sound 1: sample 17 upper plot, sample 19 lower plot,
sound 2: sample 40 upper plot, sample 38 lower plot

Per fare ciò stavo pianificando di eseguire un'espansione di Chebyshev attorno a ciascun picco e di utilizzare il vettore dei coefficienti di Chebyshev come input per un algoritmo di cluster (k-significa?).

A titolo di esempio, qui ci sono parti dei segnali temporali misurati in due posizioni vicine (blu) approssimate da una serie di Chebyshev a 5 termini su 9 campioni (rossi) attorno a due picchi (cerchi blu): inserisci qui la descrizione dell'immagine

Le approssimazioni sono abbastanza buone :-).

Però; i coefficienti di Chebyshev per la trama superiore sono:

Clu = -1.1834   85.4318  -39.1155  -33.6420   31.0028
Cru =-43.0547  -22.7024 -143.3113   11.1709    0.5416

E i coefficienti di Chebyshev per la trama inferiore sono:

Cll = 13.0926   16.6208  -75.6980  -28.9003    0.0337
Crl =-12.7664   59.0644  -73.2201  -50.2910   11.6775

Mi piacerebbe aver visto Clu ~ = Cll e Cru ~ = Crl, ma questo non sembra essere il caso :-(.

Forse c'è un'altra base ortogonale più adatta in questo caso?

Qualche consiglio su come procedere (sto usando Matlab)?

Grazie in anticipo per eventuali risposte!


1
Sembra che tu stia intrinsecamente assumendo che la "forma" del picco, quando espressa nello spazio vettoriale dei coefficienti polinomiali di Chebyshev, è continua (cioè una piccola modifica nella forma di una porzione del picco avrà un piccolo cambiamento nei coefficienti). Hai motivo di credere che sia così? Sembra che tu abbia scelto il tuo strumento senza assicurarti che risolva il problema a portata di mano.
Jason R,

Per essere chiari, in che modo stai tentando di "classificare" i picchi? Stai cercando di associare misurazioni dai tuoi vari sensori che corrispondono a picchi identici? Hai altri mezzi con cui misurare a priori il relativo ritardo temporale e quindi utilizzare tali informazioni per la classificazione?
Jason R,

Ciao Jason R. Ho aggiornato la mia domanda per rendere le cose un po 'più chiare.
Andy,

In realtà sto cercando di riprodurre i passaggi del documento "Interpretazione strutturale automatizzata attraverso la classificazione degli orizzonti sismici" (Borgos et al). Ho cercato di spiegare il problema in termini più generali.
Andy,

@Andy Puoi spiegarmi in che modo questi coefficienti corrispondono alle linee rosse mostrate qui? Non sembrano essere correlati ...
Spacey,

Risposte:


2

Sembra che tu abbia una sola fonte, x [n] e più segnali microfonici . Supponendo che il tuo percorso di propagazione dalla sorgente ai microfoni sia ragionevolmente lineare e invariante nel tempo, tu e semplicemente modelli il percorso come una funzione di trasferimento. Quindi in pratica hai doveyi[n]

yi[n]=hi[n]x[n]
hi[n]è la risposta all'impulso della funzione di trasferimento dalla sorgente al microfono "i". Queste funzioni di trasferimento hanno risposte di ampiezza e fase diverse. Se sono abbastanza diversi, anche i singoli segnali dei microfoni saranno abbastanza diversi e non c'è motivo di credere che i picchi verranno effettivamente visualizzati nello stesso punto. Nella maggior parte degli ambienti acustici, saranno "diversi" se i microfoni sono distanti più di un quarto di lunghezza d'onda per le frequenze di interesse (o dove c'è energia non banale nello spettro).

Se è possibile misurare le funzioni di trasferimento, è possibile filtrare ciascun segnale del microfono con l'inverso della funzione di trasferimento. Ciò dovrebbe rendere i segnali del microfono molto più simili e ridurre l'effetto del filtro.

Un'alternativa sarebbe quella di combinare tutti i segnali del microfono in un beamformer che ottimizzi il pickup dalla sorgente ma rifiuti tutto il resto. Ciò dovrebbe anche fornire una versione abbastanza "pulita" del segnale sorgente.

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.