我想写一个返回一个的函数np.array
尺寸的nx
x ny
包含具有均值的中心高斯分布mu
and sd sig
。下面的代码在某些情况下有效,但在许多情况下无效 - 有什么问题或者我还应该写什么来获得我需要的东西?
import matplotlib.pyplot as plt
import numpy as np
def create2dGaussian(mu, sigma, nx, ny):
x, y = np.meshgrid(np.linspace(-nx / 2.0, +nx / 2.0, nx), np.linspace(-ny / 2.0, +ny / 2.0, ny))
d = np.sqrt(x * x + y * y)
g = np.exp(-((d - mu) ** 2 / (2.0 * sigma ** 2)))
# just for debugging:
np.set_printoptions(precision=1, suppress=True)
print(g.shape)
print(g)
plt.imshow(g, cmap='jet', interpolation='nearest')
plt.colorbar()
plt.show()
return g
以下是一些带有注释的测试用例:
from create2dGaussian import create2dGaussian
create2dGaussian(1, 10, 25, 25) # seems to work
create2dGaussian(1, 5, 25, 25) # the middle is not quite the peak anymore
create2dGaussian(1, 1, 25, 25) # the above problem more clearly visible
create2dGaussian(1, 1, 5, 5) # here it is extrem as the middle is now only 0.6
create2dGaussian(5, 10, 25, 25) # mean is still 1 and not 5