Fftshift или convolve из модуля NumPy некорректно работаютPython

Программы на Python
Anonymous
Fftshift или convolve из модуля NumPy некорректно работают

Сообщение Anonymous »

Я пытаюсь показать в Python эквивалентность умножения двух сигналов во временной области и их свертки в частотной области.
Благодаря 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)

# 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

Вернуться в «Python»