A amostragem prévia antes da correlação cruzada é inútil?


12

Considere um caso simples em que dois sinais de dois sensores diferentes são correlacionados e o atraso de tempo de chegada calculado a partir da absissa do pico de sua função de correlação cruzada.

Agora, vamos supor que, devido às restrições de dimensionalidade de ambas as antenas e às restrições na taxa de amostragem máxima possível, o atraso máximo possível possível é , correspondendo a 10 amostras.D

O problema:

Devido a essas restrições, o atraso calculado pode variar de qualquer valor inteiro entre 0 e 10 amostras, ou seja: . Isso é problemático, porque o que eu realmente quero é a discriminação por atraso fracionário do atraso entre os dois sinais que entram nas minhas antenas e a alteração das dimensões ou da taxa de amostragem não é uma opção.0D10

Alguns pensamentos:

  • Naturalmente, a primeira coisa que penso neste caso é aumentar a amostragem dos sinais antes de executar uma correlação cruzada. No entanto, acho que isso é 'trapaça' de alguma forma, porque não estou realmente adicionando nenhuma informação nova ao sistema.

  • Eu não entendo como upsampling não é 'trapaça' em certo sentido. Sim, estamos reconstruindo nosso sinal com base nas informações de frequência atualmente observadas, mas como isso nos dá um conhecimento de onde um sinal realmente começou entre, digamos, e D = 8 ? Onde estava essa informação contida no sinal original que determinou que o verdadeiro início de atraso fracionário do sinal estava realmente em D = 7,751 ?D=7D=8D=7,751

As questões):

  • Isso é realmente "trapaça"?

    • Caso contrário, de onde vem essas novas 'informações'?
    • Se sim, quais outras opções estão disponíveis para estimar os tempos de atraso fracionário?
  • Estou ciente de aumentar a amostragem do resultado da correlação cruzada, na tentativa de obter respostas de subamostras para o atraso, mas isso também não é uma forma de "trapaça"? Por que é diferente da amostragem prévia antes da correlação cruzada?

Se, de fato, é o caso de a amostragem não estar "trapaceando", por que precisaríamos aumentar nossa taxa de amostragem? (Não ter uma taxa de amostragem mais alta sempre melhor em certo sentido do que interpolar um sinal amostrado baixo?)

Parece que poderíamos apenas amostrar em uma taxa muito baixa e interpolar o quanto quisermos. Isso não tornaria inútil aumentar a taxa de amostragem à luz de simplesmente interpolar um sinal para o desejo de nosso coração? Percebo que a interpolação leva tempo computacional e simplesmente começar com uma taxa de amostragem mais alta não seria, mas será esse o único motivo?

Obrigado.


3
Duvido que exista alguma diferença na precisão, já que a quantidade de informações é a mesma, mas certamente é mais barato interpolar após a correlação cruzada apenas na região de interesse do que fazer o upsample de tudo primeiro e depois fazer todas essas multiplicações extras.
Endolith

@endolith Bons pontos. Agora estou mais claro por que / como isso funciona e, sim, aumentar a amostra do resultado seria o caminho a seguir neste caso.
Spacey

Respostas:


12

Não é trapaça e também não adiciona nenhuma informação nova. O que você está fazendo é a mesma coisa que qualquer LPF de upsampling está fazendo - adicionando zeros e depois reconstruindo a forma de onda com as informações de frequência já conhecidas. Portanto, não há novas informações, mas ainda há uma resolução de tempo mais fina.

Aumentar a amostragem do resultado é semelhante - nenhuma informação nova, mas uma resolução de tempo mais precisa. Você pode fazer algo muito semelhante através da interpolação quadrática .

Todos esses métodos - amostragem ampliada e interpolação polinomial - obtêm suas informações sobre onde está o pico fracionário, tanto do próprio pico quanto de seus vizinhos. Um rápido exemplo pictórico. Pico equilibrado

A linha azul na imagem acima são meus dados simulados de correlação cruzada (embora possa ser qualquer resultado, não apenas uma correlação cruzada). É o que chamo de pico "equilibrado" porque os vizinhos são simétricos. Como você pode esperar, a interpolação quadrática resultante (linha vermelha) indica que o pico real está em zero.

A imagem abaixo, por outro lado, mostra um pico desequilibrado. Observe que nada mudou no resultado, exceto pelos valores dos dois vizinhos mais próximos. Isso faz com que o interpolador mude sua estimativa do pico fracionário. insira a descrição da imagem aqui

Um benefício interessante desses métodos (interpolação polinomial e upsampling) é que ele também fornece uma estimativa do verdadeiro valor do pico, embora geralmente estejamos mais interessados ​​no local.

Se, de fato, é o caso de a amostragem não estar "trapaceando", por que precisaríamos aumentar nossa taxa de amostragem?

Satisfazer o critério de Nyquist.

Ter uma taxa de amostragem maior sempre é melhor em certo sentido do que interpolar um sinal amostrado baixo?

Não. Do ponto de vista teórico, desde que o critério de Nyquist seja atendido, não importa qual seja a taxa de amostragem. Do ponto de vista prático, você geralmente obtém uma taxa de amostragem tão baixa quanto possível para reduzir os requisitos de armazenamento e a carga computacional, o que, por sua vez, reduz os recursos necessários e o consumo de energia.


1
Fs

1
@Mohammad Sim e não. O ruído - seja dos próprios resultados ou do ruído de quantização - fará com que o aumento da resolução do tempo não faça sentido. Até esse ponto, no entanto, sim, aumentar a amostragem deve melhorar a precisão da estimativa.
Jim Clay

1
notas e código de exemplo para quadrática interpolação / parabólica: gist.github.com/255291#file_parabolic.md e alguns métodos de interpolação alternativas: dspguru.com/dsp/howtos/how-to-interpolate-fft-peak
endolith

2
@JimClay Tive a chance de dormir nele. Agora está claro - as informações estão sempre lá - apenas estão codificadas na relação entre as amostras, por assim dizer. E é isso que o encaixe de poli de fato usa em sua interpolação. E como o sinal é limitado por banda (ou seja, só pode mudar tão rapidamente em um intervalo de tempo), existem muitas maneiras pelas quais ele pode existir entre amostras.
Spacey

8

Qualquer sinal de banda ilimitada pode ser interpolado. A informação adicional "entre as amostras" está contida nas amostras adjacentes mais o fato de o sinal ter limite de banda antes da amostragem (o que tende a espalhar informações entre amostras adjacentes). Se dois sinais tiverem banda ilimitada, será a correlação cruzada, para que a correlação cruzada também possa ser interpolada. Upsampling é apenas outra forma de interpolação, uma forma muito precisa de interpolação para sinais ilimitados de banda; mas você também pode usar a interpolação Sinc (ambas podem ser mais precisas que a interpolação quadrática ou parabólica).

A interpolação pode mostrar um pico entre as amostras. Assim, talvez não seja inútil.

Se você tiver um sinal que contenha um espectro mais amplo, ele poderá conter mais informações. A amostragem em uma taxa mais alta fornecerá, assim, mais informações, mas apenas até pouco abaixo da metade da nova frequência limite da banda, e somente se o sinal contiver conteúdo de frequência espectral útil real acima do limite da banda antiga, e se você agora puder obter esse adicional espectro usando um novo processo ou filtro de limitação de banda mais ampla, em vez do antigo com mais perdas. A amostragem de dados em uma frequência muito maior de um sinal que já era ilimitado para uma frequência muito menor abaixo de Fs / 2 comprará apenas interpolação, e não mais conteúdo de informações.

Se a amostragem for quantizada, a amostragem a uma taxa mais alta poderá comprar uma fração de um LSB a mais informações, devido ao pontilhamento ou modelagem de ruído do erro de quantização. Mas isso depende da relação S / N e da precisão do amostrador e do processo exato de quantização usado na amostragem.

Se dois sinais não tiverem um limite de banda adequado antes da amostragem e da correlação cruzada, então a ampliação ou a interpolação podem não apenas lhe oferecer um resultado de lixo, mas também a correlação cruzada não interpolada original.


1
Obrigado hotpaw2. Portanto, é correto dizer que realmente não importa se você amplia os dois sinais e correlaciona ou correlaciona e amplia o resultado? Por causa da limitação de banda, os dois métodos devem fornecer os mesmos resultados?
Spacey

@ Mohammad: Eu acho que contém a mesma informação de qualquer maneira, mas como a interpolação não é perfeita, os resultados serão ligeiramente diferentes, dependendo da implementação.
Endolith

3

Penso que a melhor resposta que posso lhe dar é: você tem todos os meios para descobrir por si mesmo. Crie um exemplo "para trás". Usando o Matlab, comece com dois sinais amostrados com períodos de amostragem muito pequenos (para que sejam sinais quase contínuos). Calcule a correlação cruzada e encontre o pico (se é isso que você deseja), que você poderá fazer com alta precisão. Em seguida, reduza a amostra dos dois sinais e repita o processo. Compare a localização e a altura do segundo pico com o primeiro. Tenho certeza que o segundo será pior. A melhoria do segundo para o primeiro é o que você ganha, se você fizer uma amostragem antes da correlação cruzada.

Para fazer o upsample da maneira correta, os dois sinais precisam ter uma banda limitada e você precisa conhecer essas larguras de banda. A "nova" informação que você menciona na sua pergunta vem das amostras adjacentes e o fato de os sinais serem limitados por banda.


Obrigado Telaclavo. Uma coisa que realmente não está clara para mim é a terminologia de ser "limitado por banda". Eu sei o que significa, mas não entendo por que isso está sendo mencionado aqui. QUALQUER sistema, exceto que possivelmente o ruído seja "limitado por banda", por que ele está sendo mencionado repetidamente nesse sentido?
Spacey

3

Para adicionar um pouco às respostas anteriores, você pode obter o equivalente a uma correlação cruzada limitada por banda com amostra ampliada, tornando sua variável de correlação um número inteiro não.

τ

τ=argmaxτn=0N1f(n)g(n+τ)

Ou seja, ele encontra o máximo da correlação cruzada.

abf(n)g(n)n={0,1,...,N1}Nτ[N+1,N1]

τcorrelate_pointomegaτ=1τ1

N2piomega

ττ

import numpy
from numpy import fft
from scipy import optimize

def arg_max_corr(a, b):

    if len(a.shape) > 1:
        raise ValueError('Needs a 1-dimensional array.')

    length = len(a)
    if not length % 2 == 0:
        raise ValueError('Needs an even length array.')

    if not a.shape == b.shape:
        raise ValueError('The 2 arrays need to be the same shape')

    # Start by finding the coarse discretised arg_max
    coarse_max = numpy.argmax(numpy.correlate(a, b, mode='full')) - length+1

    omega = numpy.zeros(length)
    omega[0:length/2] = (2*numpy.pi*numpy.arange(length/2))/length
    omega[length/2+1:] = (2*numpy.pi*
            (numpy.arange(length/2+1, length)-length))/length

    fft_a = fft.fft(a)

    def correlate_point(tau):
        rotate_vec = numpy.exp(1j*tau*omega)
        rotate_vec[length/2] = numpy.cos(numpy.pi*tau)

        return numpy.sum((fft.ifft(fft_a*rotate_vec)).real*b)

    start_arg, end_arg = (float(coarse_max)-1, float(coarse_max)+1)

    max_arg = optimize.fminbound(lambda tau: -correlate_point(tau), 
            start_arg, end_arg)

    return max_arg

1
τττ1

Oh, sua pergunta desapareceu! Ainda assim, deixarei a resposta lá.
Henry Gomersall

tau

N2N(logN+1)

Além disso, acho que pensar no domínio de Fourier é realmente muito mais simples. Mas talvez isso não seja normal!
Henry Gomersall

2

Há uma prova intuitiva de que o aumento da amostragem antes da correlação cruzada é equivalente a fazê-lo posteriormente:

A correlação cruzada é convolução com o outro sinal invertido no tempo. A reversão do tempo não afeta a largura de banda. Convolução é multiplicação no domínio da frequência, o que também não aumenta a largura de banda. Se os sinais originais forem adequadamente limitados à banda, até a metade da frequência de amostragem, o resultado da correlação cruzada também será. Nenhum alias é introduzido para arruinar o resultado. A interpolação depois salva o trabalho.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.