Я делал алгоритм быстрого преобразования Фурье, основанный на методе Кули-Тьюки.Код выглядит хорошо для меня, но я продолжаю получать ошибку, как:
Casting complex values to real discards the imaginary part
Я не уверен, как изменить назначения в итерациях.Алгоритм описан здесь:
def fast_fourier_transformation(data):
N = len(data)
if N > 1:
Wn = math.e ** (2 * math.pi * 1j / N)
W = 1
A_even = data[::2]
A_odd = data[1::2]
B_even = fast_fourier_transformation(A_even)
B_odd = fast_fourier_transformation(A_odd)
for k in range(0, N // 2):
data[k] = B_even[k] + W * B_odd[k]
data[k + N // 2] = B_even[k] - W * B_odd[k]
W = W * Wn
return data