【发布时间】:2021-06-14 09:36:51
【问题描述】:
我添加了 excel 图,从中我得到指数方程,我正在尝试在 Python 中对其进行曲线拟合。
当我使用它来预测 y 数据时,我的拟合方程与我提供的经验数据并不接近,预测给出 f(-25)= 5.30e-11,而经验数据 f(-25)给出 = 5.3e-13
如何改进代码以接近经验数据的预测,或者我在代码中犯了错误??
![][2]
import numpy as np
import matplotlib.pyplot as plt
from scipy.optimize import curve_fit
import scipy.optimize as optimize
import scipy.stats as stats
pd.set_option('precision', 14)
def f(x,A,B):
return A * np.exp((-B) * (x))
y_data= [2.156e-05, 1.85e-07, 1.02e-10 , 1.268e-11, 5.352e-13]
x= [-28.8, -27.4, -26 , -25.5, -25]
p, pcov = optimize.curve_fit(f, x, y_data, p0=[10**(-59),4], maxfev=5000)
plt.figure()
plt.plot(x, y_data, 'ko', label="Empirical BER")
plt.plot(x, f(x, *p ), 'g-', label="Fitted BER" )
plt.title(" BER ")
plt.xlabel('Power Rx (dB)')
plt.ylabel('')
plt.legend()
plt.grid()
plt.yscale("log")
plt.show()
【问题讨论】:
-
你的问题是什么?
-
当我比较图表和代码时,您似乎在代码中混淆了
x和y。 -
@mkrieger1,感谢您格式化问题,问题是拟合没有预测正确的 y_data 集数据。我想知道我哪里出错了?新鲜的眼睛可能会发现我的错误
-
@John Coleman,谢谢,你能进一步解释一下混乱在哪里
-
我不知道它在预测什么以及你期望它预测什么。
标签: python curve exponential