Python 高斯函数的水平集

Python 高斯函数的水平集,python,numpy,matplotlib,scientific-computing,Python,Numpy,Matplotlib,Scientific Computing,我想绘制此2参数函数的级别集: def xi_gaussian_x(x,y): sigma = 0.8 mu = 1.2 return (1.0/(sigma*np.sqrt(2*np.pi)))*(np.exp(-(x-mu)**2/(2*sigma**2))) 其中x和y介于-pi和pi之间。我的代码如下: plt.ion() xInterval = np.linspace(-np.pi,np.pi,num=1000) yInterval =

我想绘制此2参数函数的级别集:

def xi_gaussian_x(x,y):
        sigma = 0.8
        mu = 1.2
        return (1.0/(sigma*np.sqrt(2*np.pi)))*(np.exp(-(x-mu)**2/(2*sigma**2)))
其中x和y介于-pi和pi之间。我的代码如下:

plt.ion()
xInterval = np.linspace(-np.pi,np.pi,num=1000)
yInterval = np.linspace(-np.pi,np.pi,num=1000)
levels_xi_gaussian_x=np.zeros((len(xInterval),len(yInterval)))
for i in range(len(xInterval)):
        for j in range(len(yInterval)):
              levels_xi_gaussian_x[i,j]=xi_gaussian_x(xInterval[i],yInterval[j])
plt.figure()
c = plt.contour(xInterval,yInterval,levels_xi_gaussian_x.T,50)
即使我提高了x和y间隔的分辨率,我仍然会得到-pi,pi平面中的空区域:
我怎样才能使所有平面都充满垂直线

只需使用
plt.tourtf
。高斯曲线顶部平坦(μ=1.2),底部非常浅。所以你得到的图像是意料之中的。如果你想要水平,那么你肯定不想像在斜坡上一样,用如此紧密的水平填充图像,以至于看不到单个的水平。在y轴上没有变化。你的意思是将绘图作为
mu
sigma
的函数吗?我的函数通常有两个参数(顺便说一下,它们是角度)。这里有一个我正在研究的特殊例子,这个函数只依赖于第一个参数x。所以不,我不想用mu或sigma来绘制我的函数。实际上,我考虑了高斯函数,因为我想要一个函数,它的高水平集在x=0.6和x=1.7之间,当它远离这个区域时,它的值会逐渐变小。我可以使用任何其他的平滑函数来验证这个标准。你得到的图正是我在你的代码中所期望的。您可以进一步增加级别的密度,但这样您将看不到任何级别。