我在做基于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
您的数据变量需要声明为复数(对于严格实数输入,将虚部设置为零),因为您的函数的输出需要是复数的,并且您对输入参数和返回值(output)都使用“data”。你知道吗
相关问题 更多 >
编程相关推荐