Вы не получаете ожидаемую симметрию из своего графика из-за проблемы в вашей реализации дискретного преобразования Фурье.
В частности, в вашей реализации дискретного преобразования Фурье комплексная экспонента должна включать умножение на целое числофакторы, которые я представляю, это то, что вы пытались сделать с j
и k
.Однако при настройке ваших циклов значения j
и k
являются фактическими значениями данных.Чтобы это исправить, вы должны обновить свои циклы, чтобы перейти в диапазон range(0,len(data)
следующим образом:
def discrete_fourier_transformation():
c = []
for k in range(0,len(data)):
summation = 0
for j in range(0,len(data)):
summation += data[j] * math.e ** (-1j * (2 * math.pi / len(data)) * j * k)
c.append(abs(1 / len(data) * summation))
return c