¿Es inútil el muestreo previo a la correlación cruzada?

12

Considere un caso simple en el que dos señales de dos sensores diferentes tienen correlación cruzada y el retardo de tiempo de llegada se calcula a partir de la absisa del pico de su función de correlación cruzada.

Ahora supongamos además que, debido a las restricciones de dimensionalidad de ambas antenas y las restricciones sobre la tasa de muestreo máxima posible, el retraso máximo posible posible es , correspondiente a 10 muestras.D

El problema:

Debido a esas restricciones, su retraso calculado puede variar de cualquier valor entero entre 0 y 10 muestras, es decir: . Esto es problemático porque lo que realmente quiero es la discriminación de retraso fraccional del retraso entre las dos señales que inciden en mis antenas, y cambiar las dimensiones o la frecuencia de muestreo no son una opción.0D10

Algunos pensamientos:

  • Naturalmente, lo primero que pienso para este caso es el muestreo de las señales antes de realizar una correlación cruzada. Sin embargo, creo que esto es 'trampa' de alguna manera, porque realmente no estoy agregando ninguna información nueva al sistema.

  • No entiendo cómo el muestreo ascendente no es 'hacer trampa' en cierto sentido. Sí, estamos reconstruyendo nuestra señal en función de su información de frecuencia observada actualmente, pero ¿cómo da esto un conocimiento de dónde comenzó realmente una señal, por ejemplo, y ? ¿Dónde estaba esta información contenida en la señal original que determinaba que el verdadero inicio fraccionario de retardo de la señal estaba realmente en ?D = 8 D = 7.751D=7D=8D=7.751

Las preguntas):

  • ¿Es esto realmente "trampa"?

    • Si no es así, ¿de dónde viene esta nueva 'información'?
    • En caso afirmativo, ¿qué otras opciones están disponibles para estimar los tiempos de retraso fraccional?
  • Estoy al tanto de aumentar el resultado de la correlación cruzada, en un intento de obtener respuestas de submuestra a la demora, pero ¿no es esto también una forma de "trampa"? ¿Por qué es diferente del muestreo anterior a la correlación cruzada?

Si de hecho es el caso de que el muestreo ascendente no es 'trampa', entonces ¿por qué necesitaríamos aumentar nuestra tasa de muestreo? (¿Tener una frecuencia de muestreo más alta no siempre es mejor en cierto sentido que interpolar una señal de muestreo baja?)

Parecería entonces que podríamos simplemente tomar muestras a una tasa muy baja e interpolar todo lo que queramos. ¿Entonces esto no haría que el aumento de la frecuencia de muestreo sea 'inútil' a la luz de simplemente interpolar una señal al deseo de nuestro corazón? Me doy cuenta de que la interpolación lleva tiempo computacional y simplemente comenzar con una frecuencia de muestreo más alta no, pero ¿es esa la única razón?

Gracias.

Spacey
fuente
3
Dudo que haya alguna diferencia en la precisión, ya que la cantidad de información es la misma en ambos sentidos, pero ciertamente es más barato interpolar después de la correlación cruzada solo en la región de interés que muestrear todo primero y luego hacer todas esas multiplicaciones adicionales.
endolito
@endolith Buen punto (s). Ahora estoy más claro en cuanto a por qué / cómo funciona esto, y sí, muestrear el resultado sería el camino a seguir en este caso.
Spacey

Respuestas:

12

No es trampa, y tampoco agrega ninguna información nueva. Lo que está haciendo es lo mismo que cualquier LPF de muestreo ascendente: agregar ceros y luego reconstruir la forma de onda con la información de frecuencia ya conocida. Por lo tanto, no hay información nueva, pero todavía hay una resolución de tiempo más fina.

El muestreo ascendente del resultado es similar: no hay información nueva pero una resolución de tiempo más precisa. Puede hacer algo muy similar a través de la interpolación cuadrática .

Todos estos métodos (muestreo ascendente e interpolación polinomial) obtienen su información sobre dónde proviene el pico fraccional tanto del pico mismo como de sus vecinos. Un ejemplo pictórico rápido. Pico equilibrado

La línea azul en la imagen de arriba son mis datos simulados de correlación cruzada (aunque podría ser cualquier resultado, no solo una correlación cruzada). Es lo que yo llamo un pico "equilibrado" porque los vecinos son simétricos. Como es de esperar, la interpolación cuadrática resultante (línea roja) indica que el verdadero pico está en cero.

La imagen a continuación, por otro lado, muestra un pico desequilibrado. Tenga en cuenta que nada ha cambiado en el resultado, excepto los valores de los dos vecinos más cercanos. Sin embargo, esto hace que el interpolador cambie su estimación del pico fraccional. ingrese la descripción de la imagen aquí

Un beneficio adicional ingenioso de estos métodos (interpolación polinómica y muestreo ascendente) es que también le brinda una estimación del verdadero valor pico, aunque generalmente estamos más interesados ​​en la ubicación.

Si de hecho es el caso de que el muestreo ascendente no es 'trampa', entonces ¿por qué necesitaríamos aumentar nuestra tasa de muestreo?

Para satisfacer el criterio de Nyquist.

¿Tener una frecuencia de muestreo más alta no es siempre mejor en cierto sentido que interpolar una señal de muestreo baja?

No. Desde un punto de vista teórico, siempre que se cumpla el criterio de Nyquist, no importa cuál sea la frecuencia de muestreo. Desde un punto de vista práctico, generalmente utiliza una frecuencia de muestreo lo más baja posible para reducir los requisitos de almacenamiento y la carga computacional, lo que a su vez reduce los recursos necesarios y el consumo de energía.

Jim Clay
fuente
1
@ Jim, conozco el criterio de Nyquist. :-) Lo que quise decir fue en el contexto de aumentar , ¿no sería mejor tener una frecuencia de muestreo más alta, para no tener que aumentar la muestra, y por lo que estoy escuchando, esto es cierto. Parece que una vez que Nyquist está satisfecho, toda la información que alguna vez va a obtener está 'ya allí', y el muestreo ascendente hasta cierto nivel le dará la resolución de tiempo que desee. En ese sentido, ¿esto lo hace abierto? Cuanto más alto pueda permitirse aumentar la muestra, mejor? Fs
Spacey
1
@Mohammad Sí y no. El ruido, ya sea de los propios resultados o del ruido de cuantificación, eventualmente hará que aumentar la resolución del tiempo no tenga sentido. Sin embargo, hasta ese momento, sí, el muestreo más debería mejorar la precisión de la estimación.
Jim Clay
1
notas y código de ejemplo para la interpolación cuadrática / parabólica: gist.github.com/255291#file_parabolic.md y algunos métodos alternativos de interpolación: dspguru.com/dsp/howtos/how-to-interpolate-fft-peak
endolith
2
@ JimClay Tuve la oportunidad de dormir en él. Ahora está claro, la información siempre está ahí, solo está codificada en la relación entre las muestras, por así decirlo. Y esto es lo que, de hecho, utiliza el poly-fit en su interpolación. Y dado que la señal está limitada en la banda (es decir, solo puede cambiar tan rápido dentro de un lapso de tiempo), solo hay muchas maneras en que puede existir entre muestras.
Spacey
8

Cualquier señal de banda limitada puede ser interpolada. La información adicional "entre las muestras" está contenida en las muestras adyacentes más el hecho de que la señal estaba limitada en banda antes del muestreo (que tiende a difundir información entre muestras adyacentes). Si dos señales tienen límite de banda, entonces será la correlación cruzada, por lo que la correlación cruzada también se puede interpolar. El muestreo ascendente es solo otra forma de interpolación, una forma muy precisa de interpolación para señales de banda limitada; pero también podría usar la interpolación de Sinc (las cuales pueden ser más precisas que la interpolación cuadrática o parabólica).

La interpolación puede mostrar un pico entre muestras. Por lo tanto, tal vez no sea inútil.

Si tiene una señal que contiene un espectro más amplio, puede contener más información. Por lo tanto, muestrearlo a una velocidad más alta proporcionará más información, pero solo hasta por debajo de la mitad de la nueva frecuencia límite de banda, y solo si la señal contiene contenido de frecuencia espectral útil real por encima del límite de banda anterior, y si ahora puede obtener esto adicional espectro mediante el uso de un nuevo proceso o filtro limitador de banda de banda más ancha, en lugar del antiguo más con pérdidas. El muestreo de datos a una frecuencia mucho más alta de una señal que ya estaba limitada en banda a una frecuencia mucho más baja por debajo de Fs / 2 solo le comprará interpolación, no más contenido de información.

Si el muestreo se cuantifica, el muestreo a una tasa más alta podría proporcionarle una fracción de un LSB más información, debido a la interpolación o al ruido del error de cuantificación. Pero esto depende de la relación S / N y la precisión de la muestra y el proceso de cuantificación exacto utilizado en el muestreo.

Si dos señales no están correctamente limitadas en la banda antes del muestreo y la correlación cruzada, entonces no solo el muestreo ascendente o la interpolación pueden comprarle un resultado basura, sino que también podría ser la correlación cruzada no interpolada original.

hotpaw2
fuente
1
Gracias hotpaw2. Entonces, ¿es correcto decir que realmente no importa si tomas muestras de ambas señales y luego correlacionas o correlacionas y luego muestras el resultado? Debido a la limitación de banda, ¿los dos métodos deberían darle los mismos resultados?
Spacey
@Mohammad: Creo que contiene la misma información de cualquier manera, pero como la interpolación no es perfecta, los resultados serán ligeramente diferentes dependiendo de la implementación.
endolito
3

Creo que la mejor respuesta que puedo darle es: tiene todos los medios para averiguarlo usted mismo. Construya un ejemplo "al revés". Con Matlab, comience con dos señales muestreadas con períodos de muestreo muy pequeños (de modo que sean señales de tiempo casi continuo). Calcule la correlación cruzada y encuentre el pico (si eso es lo que desea), que podrá hacer con alta precisión. Luego, reduzca la muestra de ambas señales y repita el proceso. Compare la ubicación y la altura del segundo pico con el primero. Estoy seguro de que el segundo será peor. La mejora del segundo al primero es lo que gana, si sube la muestra antes de la correlación cruzada.

Para aumentar la muestra de la manera correcta, ambas señales deben estar limitadas en la banda, y usted necesita conocer esos anchos de banda. La "nueva" información que menciona en su pregunta proviene de las muestras adyacentes, y el hecho de que las señales son limitadas en la banda.

Telaclavo
fuente
Gracias telaclavo. Una cosa que realmente no está clara para mí es la terminología de estar 'limitado en la banda'. Sé lo que significa, pero no entiendo por qué se menciona aquí. CUALQUIER sistema, excepto que posiblemente el ruido esté 'limitado en la banda', entonces, ¿por qué se menciona una y otra vez en este sentido?
Spacey
3

Para agregar un poco a las respuestas anteriores, puede obtener el equivalente de una correlación cruzada limitada de banda de muestreo superior al hacer que su variable de correlación sea no entera.

El siguiente código (python) calcula , donde τ

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

Es decir, encuentra el máximo de la correlación cruzada.

Las variables de entrada ay bdescriben y para y se supone que ambas son limitadas de banda y periódicas con período (el cambio se implementa en el dominio discreto de Fourier). está en el rango .f(n)g(n)n={0,1,...,N1}Nτ[N+1,N1]

La intención es mostrar cómo se puede realizar la correlación cruzada para no entero , que se define por el cierre . Esto utiliza la matriz, que describe la rotación del fasor complejo en cada frecuencia discreta correspondiente a un cambio de tiempo . luego escala esto para cada turno. Debería ser evidente que para mantener una señal en tiempo real, las rotaciones de las frecuencias negativas son solo veces las rotaciones de las frecuencias positivas (para los pares de frecuencias correspondientes).τcorrelate_pointomegaτ - 1τ=1τ1

La única sutileza está en cómo trata la muestra (la frecuencia de nyquist), ya que esta se comparte entre las bandas positivas y negativas. La solución utilizada aquí es interpolar entre el fasor de rotación positivo y el fasor de rotación negativo (que son reflejos en el eje real), que es proyectar cualquiera de los fasores de rotación de la unidad en el eje real, que es una función cos (esto es porque eso es el valor correspondiente a la frecuencia de nyquist). Claramente, este valor debe ser real para mantener una señal de dominio en tiempo real.N2piomega

Puede usar esto para calcular la correlación cruzada para cualquier valor arbitrariamente preciso de . Simplemente llame al cierre (que puede devolverse como invocable) con el valor de desee.τττ

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
Henry Gomersall
fuente
1
Tendré que pensar si su pregunta es correcta (y no tengo tiempo en este momento). La forma en que pienso es que está cambiando el retraso del grupo de su señal, lo que puede hacer por la cantidad que desee. Esto es exactamente equivalente a una convolución circular con una función sinc en el dominio del tiempo, con el desplazamiento sinc por (pero aún muestreado en las mismas ubicaciones que la señal original). Vale la pena señalar que con un entero , todos los cruces por cero del sinc se alinean con los tiempos de muestra, excepto at (donde es ), por lo que la señal se desplaza trivialmente. τ τ 1τττ1
Henry Gomersall
¡Oh, tu pregunta desapareció! Aún así, dejaré la respuesta allí.
Henry Gomersall
Gracias Henry - (Perdón por eliminar mi pregunta, estaba tratando de aclararla :-)). (Soy un poco lento en la absorción de Python pero estoy trabajando en ello). De todos modos, sí, creo que entiendo su método, y creo que su esencia radica en que se toma una interpolación de la respuesta de fase del resultado de la correlación cruzada, y el valor correspondiente se descifró a partir de ahí. Tal vez necesito más tiempo para digerir, pero no obstante interesante. ¿Dónde / por qué lo has usado en lugar de la interpolación en el dominio del tiempo? El contexto podría ayudar. ¡Gracias! tau
Spacey
Fue una búsqueda ingenua de la velocidad, aunque estoy feliz de que me digan que hay un algoritmo de interpolación de dominio de tiempo más rápido. Mi razonamiento es que para realizar el cambio de tiempo no entero en el dominio del tiempo, necesitará multiplicaciones para realizar la convolución, frente a utilizando el método de Fourier (o por ahí) ) La correlación se toma en el dominio del tiempo en ambos casos. Si intenta volver a muestrear, me parece una tarea muy lenta (¡y yo también lo haría en el dominio de Fourier!). N ( log N + 1 )N2N(logN+1)
Henry Gomersall
Además, creo que pensar en el dominio de Fourier es mucho más simple. ¡Pero tal vez eso no sea normal!
Henry Gomersall
2

Existe una prueba intuitiva de que el muestreo ascendente antes de la correlación cruzada es equivalente a hacerlo después:

La correlación cruzada es convolución con la otra señal invertida en el tiempo. La inversión de tiempo no afecta el ancho de banda. La convolución es la multiplicación en el dominio de la frecuencia, que tampoco aumenta el ancho de banda. Si las señales originales tienen una limitación de banda adecuada, a la mitad de la frecuencia de muestreo, entonces también lo será el resultado de la correlación cruzada. No se introducen alias para arruinar el resultado. La interpolación luego ahorra trabajo.

Olli Niemitalo
fuente