Благодаря Baddioes в этом посте, это было показано, что такую эквивалентность можно показать с помощью функции fftshift, но пример был выполнен в Matlab. Я ожидал получить абсолютно такой же результат в Python, но он не тот, код ниже:
Код: Выделить всё
f = 2e6
t = np.linspace(0,1,64)
x = np.sin(2*np.pi*f*t)
y = np.sin(2*np.pi*0.5*f*t)
# multiplication in time domain
signal_xy = x*y
# Fourier of multiplied signals and individual signal
FFT_xy = np.fft.fft(signal_xy)
FFT_x = np.fft.fft(x)
FFT_y = np.fft.fft(y)
n = FFT_x.shape[0]
# plot the result
plt.plot(abs(FFT_xy))
plt.plot(np.fft.fftshift(abs(np.convolve(np.fft.fftshift(FFT_x),np.fft.fftshift(FFT_y), 'same')))/len(FFT_x), linestyle='--')

Я также пробовал использовать fftshift и convolve из модуля scipy, но результат абсолютно тот же.
Действует ли fftshift и функции свертки корректно работают в Python?
Подробнее здесь: https://stackoverflow.com/questions/790 ... -operation