显示奇怪的复合相

2024-04-19 17:10:32 发布

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

使用以下代码:

from numpy import *
from matplotlib.pyplot import *

Radius=10
N=1024
dx=2*Radius/N
dy=dx
x=r_[-Radius:Radius:dx]
y=r_[-Radius:Radius:dy]
X, Y = meshgrid(x,y)
R = sqrt(X**2+Y**2)
PHI = arctan2(Y,X)

ringthing = R < Radius
ring = zeros((2,N,N),dtype=complex)
ring[0] = ringthing
ring[1] = ringthing*exp(1j*PHI)

f=fig()
p1=f.add_subplot(121)
p1.imshow(angle(ring[0]))
p2=f.add_subplot(122)
p2.imshow(angle(ring[1]))

f.show()

第二张图片的左下角是红色的(相位等于π),没有明显的原因。为什么会这样?在


Tags: 代码fromimportaddp2phiringimshow
1条回答
网友
1楼 · 发布于 2024-04-19 17:10:32

问题是圆外的值为零,而复角的定义并不明确(这是一个奇点)。浮点运算的结果是,在某些部分,它们的计算结果是0,而在另一些部分,则是-0,这可以通过运行

from __future__ import division

from numpy import *

Radius=10
N=1024
dx=2*Radius/N
dy=dx
x=r_[-Radius:Radius:dx]
y=r_[-Radius:Radius:dy]
X, Y = meshgrid(x,y)
R = sqrt(X**2+Y**2)
PHI = arctan2(Y,X)

ringthing = R < Radius
ring = zeros((2,N,N),dtype=complex)
ring[0] = ringthing
ring[1] = ringthing*exp(1j*PHI)

print ring[1][-1, 0], angle(ring[1][-1, 0])
print ring[1][0, -1], angle(ring[1][0, -1])

有了输出

^{pr2}$

一种解决方法是将圆外的所有值显式设置为零。在

相关问题 更多 >