0

Python でいくつかの実験データをプロットしましたが、データへの 3 次近似を見つける必要があります。これを行う必要があるのは、バックグラウンド (この場合はダイオードの抵抗) を除去するために 3 次近似が使用され、明らかな特徴が残るためです。これは、最初に立方体を適合させるために現在使用しているコードです。ここで、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'

曲線の平滑化の知識はありますが、理論上だけです。実装方法がわかりません。何かお役に立てば幸いです。

これまでに生成されたグラフは次のとおりです。

4

1 に答える 1

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 のマスクされた配列を使用して実行できますが、元の要素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)

これは、実際に存在するデータにのみ当てはまります (見た目からすると、データセット内のポイントがそれほど多くないため、注意してください!)。

于 2014-12-03T22:48:43.187 に答える