Projetando um vetor de característica para discriminar entre diferentes formas de onda sônicas

10

Considere os 4 seguintes sinais de forma de 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]

Signals

Notamos que os sinais 1 e 2 são parecidos e que os sinais 3 e 4 são parecidos.

Estou procurando um algoritmo que tome como entrada n sinais e os divida em m grupos, onde os sinais dentro de cada grupo são semelhantes.

O primeiro passo desse algoritmo seria geralmente calcular um vetor de característica para cada sinal: .Fi

Como exemplo, podemos definir o vetor de recurso como: [width, max, max-min]. Nesse caso, obteríamos os seguintes vetores de recursos:

F1=[13,146,245]

F2=[15,145,223]

F3=[18,181,406]

F4=[18,189,408]

O importante ao decidir sobre um vetor de característica é que sinais semelhantes obtêm vetores de características próximos uns dos outros e sinais diferentes obtêm vetores de características distantes.

No exemplo acima, obtemos:

|F2F1|=22.1,|F3F1|=164.8

Portanto, podemos concluir que o sinal 2 é muito mais semelhante ao sinal 1 do que o sinal 3.

Como vetor característica, eu também poderia usar os termos da transformação discreta de cosseno do sinal. A figura abaixo mostra os sinais, juntamente com a aproximação dos sinais pelos 5 primeiros termos da transformação discreta de cosseno: Transformações de cosseno

Os coeficientes discretos de cosseno neste caso são:

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]

Nesse caso, obtemos:

|F2F1|=141.5,|F3F1|=498.0

A proporção não é tão grande quanto ao vetor de características mais simples acima. Isso significa que o vetor de recurso mais simples é melhor?

Até agora, eu mostrei apenas 2 formas de onda. O gráfico abaixo mostra algumas outras formas de onda que seriam a entrada para esse algoritmo. Um sinal seria extraído de cada pico neste gráfico, começando no minuto mais próximo à esquerda do pico e parando no minuto mais próximo à direita do pico:Vestígio

Por exemplo, o sinal3 foi extraído deste gráfico entre a amostra 217 e 234. O sinal4 foi extraído de outro gráfico.

Caso você esteja curioso; cada gráfico corresponde a medições sonoras por microfones em diferentes posições no espaço. Cada microfone recebe os mesmos sinais, mas os sinais são levemente alterados no tempo e distorcidos de microfone para microfone.

Os vetores de características poderiam ser enviados para um algoritmo de agrupamento, como k-means, que agruparia os sinais com vetores de características próximos um do outro.

Algum de vocês tem alguma experiência / conselho sobre o design de um vetor de característica que seria bom em discriminar sinais de forma de onda?

Além disso, qual algoritmo de cluster você usaria?

Agradeço antecipadamente por todas as respostas!

Andy
fonte
E quanto ao produto de ponto bom de um sinal de entrada com um dos modelos M? Você pegaria aquele que tem o erro do quadrado mínimo. Isso para mim seria onde eu começaria. Você por acaso tentou algo assim?
Spacey
Oi Mohammad! O problema é que eu não conheço as formas de onda antecipadamente. Estou interessado em todos os sinais em torno de picos e eles podem ter muitas formas diferentes que eu não conheço antecipadamente.
Andy
Qual é o motivo para tentar encontrar novos recursos para caracterizar esses vetores do que usá-los diretamente como "recursos"? (Eles terão que ter o mesmo comprimento). No caso dos meios k agrupados, as "distâncias" entre os pequenos vetores extraídos nos mínimos dos sinais adquiridos serão primeiro calculadas e, em seguida, o algoritmo tentará encontrar um agrupamento deles em conjuntos k de variação mínima, que é o que você parece estar atrás.
um_um
Oi A_A! 1. As dimensões dos vetores são reduzidas. No caso do sinal 3, de 18 a 5, quando se utilizam os coeficientes discretos de cosseno. 2. Uma suavização está ocorrendo. Os sinais são barulhentos e não estou interessado em flutuações rápidas.
Andy
3
As pessoas do aprendizado de máquina argumentariam que você nunca deve descartar informações - o sistema deve aprender tudo. Obviamente, são as mesmas pessoas que projetam algoritmos que levarão um milhão de anos para serem executados, mas a questão não deixa de ter algum mérito. Em essência, você deseja jogar fora o mínimo de informação possível e aprender o que resta. Isso me parece um problema que deve ser feito em uma estrutura bayesiana (francamente, como a maior parte do processamento de sinais deve ser hoje em dia), embora isso não signifique elaborar as características mais importantes não é importante.
Henry Gomersall

Respostas:

2

Você quer apenas critérios objetivos para separar os sinais ou é importante que eles tenham algum tipo de semelhança quando ouvidos por alguém? É claro que isso teria que restringi-lo a sinais um pouco mais longos (mais de 1000 amostras).

lefteror
fonte