Я пытаюсь вычислить автокорреляцию на платформе, где единственный доступный ускоренный примитив - это (I) FFT. У меня проблема, хотя.
Я прототипировал его в MATLAB . Я, однако, немного смущен. Я предположил, что это работает просто следующим образом (это из памяти, поэтому извиняюсь, если я немного ошибся).
autocorr = ifft( complex( abs( fft( inputData ) ), 0 ) )
Однако я получаю другой результат, чем при использовании xcorr
функции. Теперь я полностью ожидаю, что не получу левую сторону автокорреляции (так как это отражение правой стороны и, следовательно, в любом случае не нужно). Однако проблема в том, что моя правая сторона, как представляется, сама отражается на полпути. Что фактически означает, что я получаю примерно половину ожидаемого объема данных.
Так что я уверен, что, должно быть, я делаю что-то очень простое, но я просто не могу понять, что.