Python错误:操作数无法与形状一起广播

时间:2017-12-22 12:00:47

标签: python python-3.x numpy gaussian

我将通过以下方式在Python 3中进行2D高斯拟合:

def gaussian_fit_2_d(data, amplitude, x0, y0, sigma_x, sigma_y, theta, offset):

    x0 = np.float64(x0)
    y0 = np.float64(y0)

    a = (np.cos(theta) ** 2) / (2 * sigma_x ** 2) + (np.sin(theta) ** 2) / (2 * sigma_y ** 2)
    b = -np.sin(2 * theta) / (4 * sigma_x ** 2) + np.sin(2 * theta) / (4 * sigma_y ** 2)
    c = (np.sin(theta) ** 2) / (2 * sigma_x ** 2) + (np.cos(theta) ** 2) / (2 * sigma_y ** 2)
    x = data["x"]
    y = data["y"]
    f = offset + amplitude * np.exp(-((a * (x - x0)) ** 2 + 2 * b * (x - x0) * (y - y0) + c * (y - y0) ** 2))
    return f.ravel()

image = sio.loadmat("File Name")
intensity = np.float64(np. array(image["p1"]))
data_size = intensity.shape

x = np.arange(0, data_size[1])
y = np.arange(0, data_size[0])
# print(data_size)
# print(x)

[X, Y] = np.meshgrid(x, y)
data = {"x": X, "y": Y}

popt, pcov = opt.curve_fit(gaussian_fit_2_d, data, intensity)

,但在最后一行我收到了以下错误:

  

ValueError:操作数无法与形状一起广播   (1558,)(41,38)

任何想法?

0 个答案:

没有答案