def double_lorentzian_fixedsplitting_testing():
# This method does not work and has to be fixed!!!
for ii in range(1):
# time.sleep(0.51)
start=2800
stop=2950
num_points=int((stop-start)/2)
x = np.linspace(start, stop, num_points)
mod,params = qudi_fitting.make_multiplelorentzian_model(no_of_lor=2)
p=Parameters()
#============ Create data ==========
p.add('c',value=100)
p.add('lorentz0_amplitude',value=-abs(np.random.random(1)*50+100))
p.add('lorentz0_center',value=np.random.random(1)*150.0+2800)
p.add('lorentz0_sigma',value=abs(np.random.random(1)*2.+1.))
p.add('lorentz1_center',value=p['lorentz0_center']+20)
p.add('lorentz1_sigma',value=abs(np.random.random(1)*2.+1.))
p.add('lorentz1_amplitude',value=-abs(np.random.random(1)*50+100))
data_noisy=(mod.eval(x=x,params=p)
+ 2*np.random.normal(size=x.shape))
para=Parameters()
result=qudi_fitting.make_doublelorentzian_fit(axis=x,data=data_noisy,add_parameters=para)
data_smooth, offset = qudi_fitting.find_offset_parameter(x,data_noisy)
data_level=data_smooth-offset
#search for double lorentzian
error, \
sigma0_argleft, dip0_arg, sigma0_argright, \
sigma1_argleft, dip1_arg , sigma1_argright = \
qudi_fitting._search_double_dip(x, data_level,make_prints=False)
print(x[sigma0_argleft], x[dip0_arg], x[sigma0_argright], x[sigma1_argleft], x[dip1_arg], x[sigma1_argright])
print(x[dip0_arg], x[dip1_arg])
plt.plot((x[sigma0_argleft], x[sigma0_argleft]), ( data_noisy.min() ,data_noisy.max()), 'b-')
plt.plot((x[sigma0_argright], x[sigma0_argright]), (data_noisy.min() ,data_noisy.max()), 'b-')
plt.plot((x[sigma1_argleft], x[sigma1_argleft]), ( data_noisy.min() ,data_noisy.max()), 'k-')
plt.plot((x[sigma1_argright], x[sigma1_argright]), ( data_noisy.min() ,data_noisy.max()), 'k-')
try:
plt.plot(x,data_noisy,'o')
plt.plot(x,result.init_fit,'-y')
plt.plot(x,result.best_fit,'-r',linewidth=2.0,)
plt.plot(x,data_smooth,'-g')
except:
print('exception')
plt.show()
评论列表
文章目录