gpt4 book ai didi

python - numpy 的复数问题

转载 作者:太空宇宙 更新时间:2023-11-03 12:24:25 24 4
gpt4 key购买 nike

我正在尝试再次翻译一些 matlab 代码,但遇到了另一个难题。代码本身非常简单,只是一个 4 节点旋转因子的演示。这是我的尝试:

from numpy import *
from matplotlib import pyplot as plt


x = zeros(4)
x[-1+1] = 0
x[0+1] = 1
x[1+1] = 1
x[2+1] = 0

z = 0 - 1j
W4 = exp(z*2*pi/4)
W0 = W4 ** 0
W1 = W4 ** 1
W2 = W4 ** 2
W3 = W4 ** 3


X = zeros(4)
X[-1+1] = (x[-1+1] + x[1+1]*W0) + W0*(x[0+1] + x[2+1]*W0)
X[0+1] = (x[-1+1] + x[1+1]*W2) + W1*(x[0+1] + x[2+1]*W2)
X[1+1] = (x[-1+1] + x[1+1]*W0) + W2*(x[0+1] + x[2+1]*W0)
X[2+1] = (x[-1+1] + x[1+1]*W2) + W3*(x[0+1] + x[2+1]*W2)


fx = fft.fft(x)

plt.plot(X)
plt.plot(fx, 'ro')
plt.title("Results 4-point hand programmed FFT (blue) and the PYTHON routine (red o)")
plt.show()

这是输出图像。第一个是使用(几乎)相同的 matlab 代码运行的,第二个是来自上面 python 代码的图像。 matlab output

py output对于第 24 到 27 行,它给了我错误“ComplexWarning:将复数值转换为实数会丢弃虚数部分”。现在我不习惯在 python 中处理复数。我尝试向所有变量添加一个复杂的组件,但它给了我一张与 matlab 相去甚远的图表。想法?如果您也希望我发布 matlab 代码,请告诉我。

最佳答案

当您指定数组 xX 时,您需要确保它是复杂数据类型,即:

x = zeros((4),dtype=complex)

编辑:

要修复绘图,您需要同时绘制实部和虚部:

plt.plot(X.real,X.imag)
plt.plot(fx.real,fx.imag, 'ro')

这给了我:

enter image description here

....这看起来像您的 Matlab 图。

关于python - numpy 的复数问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20078700/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com