我想比较两个光谱。这两个光谱彼此之间的差异在于比例因子。我想找到由于光谱不确定性而导致比例因子确定的比例因子和统计不确定性(即,实际上,这两个光谱不会是另一个光谱的精确比例版本。)
以下是缩放代码。
def scalespec(origspec, factor, startidx, endidx):
#Scale a histogram *origspec* by a factor, between startidx and endidx.
scaledspec = np.zeros_like(origspec)
for i in np.linspace(startidx, endidx - 1, endidx - startidx):
i = int(i)
NumBins = int(1 + (floor((i+1)*factor) - floor(i*factor)))
for j in range(NumBins):
if j == 0:
#first bin
scaledspec[int(floor(factor*i))] += (1/factor)*(1 + floor(factor*i)
- factor*i)*origspec[i]
elif j == NumBins-1:
#last bin
scaledspec[int(floor(factor*(i+1)))] += (1/factor)*(factor*(i + 1)
- floor(factor*(i+1)))*origspec[i]
else:
#intermediate bins
scaledspec[int(floor(factor*i + j))] += (1/factor)*origspec[i]
return scaledspec
我尝试使用scipy.optimize.curve_fit(),但是由于factor是上面函数中使用的参数,因此下面的代码将不起作用。
popt = np.zeros(15)
pcov = np.zeros(15)
def func(origspec, factor):
scaletest = LYtest.scalespec(origspec, factor, 750, 1750)
return(scaletest[int(factor*750):int(factor*1750)])
#ydata = ref[startidx:endidx]
for i in range (0,15):
xdata = twoDdata[i,:]
popt[i], pcov[i] = curve_fit(func, xdata, ref[int(factor*750):int(factor*1750)])
运行上述程序的输出。 NameError:名称“ factor”未定义