对第 N 个离散傅里叶变换类型误差进行编程



我正在尝试通过函数定义以下矩阵

import numpy as np
import cmath
def DFT(N):
w=cmath.exp((2j*math.pi)/N)
F=np.ones((N,N))
for i in range(1,len(F)-1):
    for j in range(1,len(F)-1):
        F[i,j]=w**(i*j)
return F

我继续收到错误

File "<pyshell#6>", line 6, in DFT
F[i,j]=pow(w,(i*j))
TypeError: can't convert complex to float

并尝试了以下方法

F[i,j]=pow(w,(i*j))
F[i,j]=w**(i*j)

我不确定可能导致错误的原因,并且还重新定义了w,类似于我重新定义F[i,j]以尝试查看这是否是原因。我想错误来自这样一个事实,即我们得到了偶数幂的实数,但据我了解,它应该只返回带有实数的数字和虚数部分的 0j。这是我的第一篇文章,我仍然是 python 的新手,所以如果我的问题提出不好,我深表歉意。

似乎问题出在我的矩阵 dtype 中,我通过定义解决了问题

 F=np.zeros((N,N),complex)

相关内容

最新更新