微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用Scipy.optimize.curve_fit拟合指数

如何解决使用Scipy.optimize.curve_fit拟合指数

def Data_to_array(file):

    r = int
    x,y=[],[]
    data = []
    line_num = 0
    #call data

    P = open(file,'r')
    data = P.readlines()
    #Get it to ignore strings
    for line in data:
        line_num += 1
        if line.find("[data]") >= 0:
            r = (line_num+1)
            # Data = P.readlines()[:r]     
            # print (Data)
        if "Sampling Rate" in line:
            SR = float(line[15:])
       
        if "temperature=" in line:
            T = float(line[12:18])
            print(str("Temperature = ")) 
            print(T)
    Data = data[r:line_num] 

    #assign data into dataframe
    df = pd.DataFrame(Data)
    #rename column in data
    df = df.rename(columns = {0: 'volts'})
    #get it to recognise the index
    df.index.name = 'Index'
    #get it to recognise the data as number
    df = df.astype({'volts': float})
    #get index to start at 1
    df.index += 1
    #assign data to lists
    I = df.index.to_list()
    t = df['volts'].to_list()
    #get it to invert data
    y = [element * -1 for element in t]
    #multiply by sampling rate
    x = [element /(SR) for element in I]
    return x,y
#This is to create the exponential function
def Exponential_func(file):
    temp_array = Data_to_array(file)
    X = np.asarray(temp_array[0])
    a,b = float()
    #Y = temp_array[1]
    f = np.exp(a*X) + b
    return f

#This is to get the optomize function to work
def Exponential_model(file):
    temp_array = Data_to_array(file)
    X = np.asarray(temp_array[0])
    Y = np.asarray(temp_array[1])
    #f = np.exp(X)
    #exp_mod = lf.ExponentialModel(X,Y)
    #pars = exp_mod.guess(Y,X)
    r =     sp.optimize.curve_fit(X,Y,Exponential_func.f)
    return r
#This is to plot the data
def Plot_Data (file):
    temp_array = Data_to_array(file)
    X = np.asarray(temp_array[0])
    Y = np.asarray(temp_array[1])
    #p_0 = np.exp(X)
    #sp.optimize.curve_fit(X,p_0)
    plt.scatter(X,Y)
    #plt.plot(Exponential_model.r)
    plt.show()
    plt.xlabel("Time (s)")
    plt.ylabel("Capacitence (μF)")
  # print(Data_to_array('Cz-Si-T-1.txt')[1])
Plot_Data("Cz-Si-T-82.txt")
Exponential_func("Cz-Si-T-82.txt")
Exponential_model("Cz-Si-T-82.txt")

当我尝试使用sp.optomize函数时,出现错误函数对象没有属性'f'”,但是在查找此问题时,函数和变量的顺序正确。 我需要这段代码来使指数曲线拟合我的数据,该曲线确实具有exp拟合,有人可以帮忙吗?代码将有助于打印出拟合曲线的功能,这将很有帮助,因为我稍后将对此进行整合。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。