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

指数拟合返回不合理的振幅,但绘制时看起来不错

如何解决指数拟合返回不合理的振幅,但绘制时看起来不错

我正在尝试拟合我的指数数据,但无法获得一个不错的答案。我正在使用scipy和以下代码

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import glob
import scipy.optimize
import pylab


def exponential(x,a,k,b):
    return a*np.exp(-x/k) + b
def main():
    filename = 'tek0071ALL.csv'
    df = pd.read_csv(filename,skiprows=14)
    t = df['TIME']
    ch3 = df['CH3']
    idx1 = df.index[df['TIME']==-0.32]
    idx2 = df.index[df['TIME']==-0.18]

    t= t[idx1.values[0]:idx2.values[0]]
    data=ch3[idx1.values[0]:idx2.values[0]]
    popt_exponential,pcov_exponential = scipy.optimize.curve_fit(exponential,t,data,p0=[1,.1,0])
   # print(popt_exponential,pcov_exponential)

    print(popt_exponential[0])
    print(popt_exponential[1])
    print(popt_exponential[2])
    plt.plot(t,'.')
    plt.plot(t,exponential(t,popt_exponential[0],popt_exponential[1],popt_exponential[2]))
    plt.show()
    plt.legend(['Data','Fit'])
main()

这是合适的样子:

enter image description here

,我认为这实际上很合适。我认为我的时间常数是正确的,这就是我要提取内容。但是,振幅确实给我带来了麻烦-通过检查,我希望振幅约为0.5,但是我得到了方程A*exp(-t/K)+C的以下值:

A:1.2424893552249658e-07
K:0.0207112474466181
C: 0.010623336832120528

我只是想知道这是否正确,而我的振幅确实应该小得足以说明指数行为。

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