Я пытаюсь взаимно коррелировать два набора данных, беря преобразование Фурье обоих и умножая сопряжение первого первого и второго, прежде чем преобразовать обратно во временное пространство.Чтобы проверить мой код, я сравниваю вывод с выводом numpy.correlate.Однако, когда я строю свой код (ограниченный определенным окном), кажется, что два сигнала идут в противоположных направлениях / отражаются около нуля.
Вот так выглядит мой вывод
Мой код:
import numpy as np
import pyplot as plt
phl_data = np.sin(np.arange(0, 10, 0.1))
mlac_data = np.cos(np.arange(0, 10, 0.1))
N = phl_data.size
zeroes = np.zeros(N-1)
phl_data = np.append(phl_data, zeroes)
mlac_data = np.append(mlac_data, zeroes)
# cross-correlate x = phl_data, y = mlac_data:
# take FFTs:
phl_fft = np.fft.fft(phl_data)
mlac_fft = np.fft.fft(mlac_data)
# fft of cross-correlation
Cw = np.conj(phl_fft)*mlac_fft
#Cw = np.fft.fftshift(Cw)
# transform back to time space:
Cxy = np.fft.fftshift(np.fft.ifft(Cw))
times = np.append(np.arange(-N+1, 0, dt),np.arange(0, N, dt))
plt.plot(times, Cxy)
plt.xlim(-250, 250)
# test against convolving:
c = np.correlate(phl_data, mlac_data, mode='same')
plt.plot(times, c)
plt.show()
(оба набора данных были дополнены N-1 ноль)