Приведение комплексных значений отбрасывает мнимую часть по быстрому алгоритму Фурье - PullRequest
1 голос
/ 24 мая 2019

Я делал алгоритм быстрого преобразования Фурье, основанный на методе Кули-Тьюки.Код выглядит хорошо для меня, но я продолжаю получать ошибку, как:

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

1 Ответ

0 голосов
/ 28 мая 2019

Ваша переменная данных должна быть объявлена ​​как сложная (установите мнимый компонент на ноль для строго реального ввода), так как вывод вашей функции должен быть сложным, и вы используете «данные» как для входного параметра, так и для возвращаемое значение (выход).

...