基于快速傅立叶算法的复值舍弃虚部算法

2024-06-16 14:54:52 发布

您现在位置:Python中文网/ 问答频道 /正文

我在做基于cooley-tukey方法的快速傅立叶变换算法。代码在我看来很好,但我不断遇到numpy错误,如:

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

Tags: 方法代码numpy算法data错误mathfast