Estoy tratando de calcular una autocorrelación en una plataforma donde la única primitiva acelerada que tengo disponible es la (I) FFT. Aunque tengo un problema.
Lo prototipé en MATLAB . Sin embargo, estoy un poco confundido. Supuse que funciona simplemente de la siguiente manera (esto es de memoria, así que disculpas si me equivoco un poco).
autocorr = ifft( complex( abs( fft( inputData ) ), 0 ) )
Sin embargo, obtengo un resultado diferente al que obtengo al usar la xcorr
función. Ahora espero no obtener el lado izquierdo de la correlación automática (ya que es un reflejo del lado derecho y, por lo tanto, no es necesario de todos modos). Sin embargo, el problema es que mi lado derecho parece reflejarse alrededor del punto medio. Lo que efectivamente significa que obtengo aproximadamente la mitad de la cantidad de datos que estoy esperando.
Así que estoy seguro de que debo estar haciendo algo muy simple, pero no puedo entender qué.