Неожиданная горизонтальная линия в дискретном обратном преобразовании Фурье функции Гаусса с нечетным числом выборокPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Неожиданная горизонтальная линия в дискретном обратном преобразовании Фурье функции Гаусса с нечетным числом выборок

Сообщение Anonymous »

Я реализую дискретное обратное преобразование Фурье в Python для аппроксимации обратного преобразования Фурье функции Гаусса.
Хотя результат выглядит многообещающе, я обнаружил неожиданную горизонтальную линию когда количество выборок n является нечетным числом.
Для n = 1000 (четного) вывод выглядит корректно:
Изображение

Для n = 1001 (нечетное), появляется неожиданная горизонтальная линия:
Изображение

Почему появляется ли эта горизонтальная линия, когда n нечетно?
Будем очень признательны за любые идеи или предложения. Спасибо!
Моя реализация
import matplotlib.pyplot as plt
import numpy as np
from sympy import symbols, exp, pi, lambdify, sqrt

# Defining the Fourier transform of a Gaussian function, sqrt(pi) * exp(-omega ** 2 / 4)
x, omega = symbols('x omega')
f_gaussian_symbolic = exp(-omega ** 2 / 4) * sqrt(pi)
f_gaussian_function = lambdify(omega, f_gaussian_symbolic, 'numpy')

def fourier_inverse(f, n):
"""
This function computes the inverse Fourier transform of a function f.
:param f: The function to be transformed
:param n: Number of samples
"""
omega_max = 20 # The max frequency we want to be sampled
omega_range = np.linspace(-omega_max, omega_max, n)

f_values = f(omega_range)
inverse_f = np.fft.ifftshift(np.fft.ifft(np.fft.fftshift(f_values)))

delta_omega = omega_range[1] - omega_range[0]
x_range = 2 * np.pi * np.fft.ifftshift(np.fft.fftfreq(n, d=delta_omega))

inverse_f *= delta_omega * n / (2 * np.pi)
return x_range, inverse_f

plt.figure(figsize=(10, 5))
x_range, inverse_f = fourier_inverse(f_gaussian_function, n=1001)
plt.plot(x_range, inverse_f.real)
plt.ylim(-2, 2)
plt.xlim(-4, 4)
plt.show()


Подробнее здесь: https://stackoverflow.com/questions/786 ... ussian-fun
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

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