立方适合图表。如何创建更适合我的数据并从拟合中检索值?

时间:2014-11-30 00:23:26

标签: python curve-fitting cubic

我在Python中绘制了一些实验数据,需要找到数据的立方拟合。我需要这样做的原因是因为立方体拟合将用于去除背景(在这种情况下是二极管中的电阻),您将留下明显的特征。这是我目前用于使立方体拟合的代码,其中Vnew和yone代表实验数据的数组。

answer1=raw_input ('Cubic Plot attempt?\n ')

    if answer1 in['y','Y','Yes']:


        def cubic(x,A):
            return A*x**3

        cubic_guess=array([40])               
        popt,pcov=curve_fit(cubic,Vnew,yone,cubic_guess)

        plot(Vnew,cubic(Vnew,*popt),'r-',label='Cubic Fit: curve_fit')
        #ylim(-0.05,0.05)   
        legend(loc='best')
        print 'Cubic plotted'
    else:
        print 'No Cubic Removal done'

我对曲线平滑有所了解,但仅在理论上。我不知道如何实现它。我真的很感激任何帮助。

以下是目前为止生成的图表:

1 个答案:

答案 0 :(得分:0)

为了使拟合的曲线“更宽”,您需要寻找外推法。虽然在这种情况下,您可以让Vnew覆盖更大的间隔,在这种情况下,您可以将其放在plot命令之前:

Vnew = numpy.linspace(-1,1, 256)  # min and max are merely an example, based on your graph
plot(Vnew,cubic(Vnew,*popt),'r-',label='Cubic Fit: curve_fit')

"消隐"您看到的功能可以通过numpy's masked arrays完成,但也可以通过从原始Vnew中移除您不想要的那些元素(我将调用xone )和yone

mask = (xone > 0.1) & (xone < 0.35)  # values between these voltages (?) need to be removed
xone = xone[numpy.logical_not(mask)]
yone = yone[numpy.logical_not(mask)]

然后重做曲线拟合:

popt,_ = curve_fit(cubic, xone, yone, cubic_guess)

这只适用于实际存在的数据(不是数据集中的许多点,从它的外观来看,所以要小心!)。