我试图使用scipy中的曲线拟合函数来拟合一系列洛伦兹曲线到一系列峰值。 目前与我的问题相关的代码是:
def fit_a_Lorentzian_peak(wavenumber_position,amplitude,peak_center,linewidth):
x = ( wavenumber_position - peak_center)/ (linewidth/2.0)
return amplitude/( 1.0 + x**2)
Xdata, Ydata= numpy.loadtxt(....)
Xdata= numpy.array(Xdata)
Ydata= numpy.array(Ydata)
initialGuess = [Ydata[maximum_point_index], Xdata[maximum_point_index], 2.0]
fitting_parameters, covarance_matrix_of_fitting_parameters = curve_fit(fit_a_Lorentzian_peak, Xdata[data_range_to_fit_to_lower:data_range_to_fit_to_upper],Ydata[data_range_to_fit_to_lower:data_range_to_fit_to_upper],p0=initialGuess)
我省略了获取数据范围的代码_下:数据范围从上到下因为它与正在发生的错误无关。在
发生的错误如下:
^{pr2}$现在我知道问题出在哪里了,但我完全不知道为什么会发生,也不知道怎么解决。为什么曲线拟合喂料参数和不同大小的自变量数组到我的拟合函数中?在
现在,我发现其他人也有同样的问题: ValueError: operands could not be broadcast together with shapes (0) (26) when using optimize.curve
但是,我在这几行中添加了明确确保扩展数据和Ydata都是numpy数组的行,因此这不可能是同一个问题。在
这里有人以前遇到过这个问题并能解决它吗? 如果是,怎么办?在
谢谢你的任何见解。在
没关系,我的initialGuess数组是错误的。 意外地将maximum_point_index作为整数数组而不是整数输入,因此给出的初始参数估计值比参数多。在
相关问题 更多 >
编程相关推荐