我对此Python代码有疑问:
A = np.zeros((2*M + 2,nt))
A[1, :] = d[0,0] * np.ones((1,nt))
其中d[0,0]
很复杂。我收到了这个错误:
ComplexWarning: Casting complex values to real discards the imaginary part
期间的
A[1, :] = d[0,0] * np.ones((1,nt))
答案 0 :(得分:0)
这是因为默认情况下numpy
数组保存的是int
类型的零,并且您尝试将复数数组分配给整数数组。如果你写A = np.zeros((2*M+2, nt), dtype=np.complex)
它应该解决问题。 dtype
参数基本上告诉numpy转换元素complex 0,它实际上是0+0.j
。
答案 1 :(得分:0)
您是否尝试计算复杂值数组A
或真正的值数组A
?如果是前者,则将A
声明为:
A = np.zeros((2*M + 2,nt), dtype=complex)
否则,将复杂值d[0, 0]
投射到真实的使用:
A[1, :] = (1+4j).real * np.ones((1,1))