自定义Lorentzian拟合代码失效,与内置Model拟合结果不符求助
Lorentzian曲线拟合问题:自定义函数与内置Model结果不符
我最近在做Lorentzian曲线拟合时碰到了麻烦——因为需要扩展拟合方程,不得不自己写自定义拟合代码。我分别用自定义def函数和内置的LorentzianModel两种方式实现了拟合,但结果完全对不上,自定义的代码根本没法正常工作。
数据处理代码
for dataset in [Bxfft]: dataset = np.asarray(dataset) freqs, psd = signal.welch(dataset, fs=266336/300, window='hamming', nperseg=16192, scaling='density') plt.semilogy(freqs[30:-7000], psd[30:-7000]/dataset.size**0, color='r', label='Bx') x = freqs[100:-7900] y = psd[100:-7900]
自定义Lorentzian拟合代码
def lorentzian(x, amp, cen, sig): return (amp/np.pi) * (sig/(x-cen)**2 + sig**2) model = Model(lorentzian) pars = model.make_params(amp=6, cen=5, sig=1) pars['amp'].max = 6 result = model.fit(y, pars, x=x) final_fit = result.best_fit print(result.fit_report(min_correl=0.25)) plt.plot(x, final_fit, 'k--', linewidth=3)
内置LorentzianModel拟合代码
model2 = LorentzianModel() params2 = model2.make_params(amplitude=6, center=5, sigma=1) params2['amplitude'].value = 6 result2 = model2.fit(y, params2, x=x) final_fit2 = result2.best_fit print(result2.fit_report(min_correl=0.25)) plt.plot(x, final_fit2, 'k--', linewidth=3)
我对比了两种方法的拟合结果,上方是自定义def实现的拟合效果,下方是内置Model的拟合效果,差异非常明显:
内容的提问来源于stack exchange,提问作者Hiddenguy
相关产品推荐
相关产品推荐

