2012-07-17 113 views
4

我需要做一個簡單的曲線擬合使用scipy的curve_fit函數。但是,我的數據是以矩陣的形式出現的。我可以很容易地在numpy中做到這一點,但我希望看到適合scipy的優點。scipy曲線適合矩陣

問題:

AX = B - >給定的A,找到X爲最小平方誤差。

from scipy.optimize import curve_fit 
def getXval(): 
    a = 4; b = 3, c = 1; 
    f0 = a*pow(b, 2)*c 
    f1 = a*b/c 
    return [f0, f1] 

def fit(x, a0, a1): 
    res = a0*x[0] + a1*x[1] 
    return [res] 

x = getXval() 
y = [0.15] 
popt, pcov = curve_fit(fit, x, y) 

然而,這是行不通的。有人能指出這裏發生了什麼嗎?

回答

2

您的代碼有幾個問題。
1)使用numpy數組而不是Python列表
2)您的y缺少值。

這個工作對我來說:

from scipy.optimize import curve_fit 
import numpy as np 
def getXval(): 
    a = 4; b = 3; c = 1; 
    f0 = a*pow(b, 2)*c 
    f1 = a*b/c 
    return np.array([f0, f1]) 

def fit(x, a0, a1): 
    res = a0*x[0] + a1*x[1] 
    return np.array([res]) 

x = getXval() 
y = np.array([0.15, 0.34]) 
popt, pcov = curve_fit(fit, x, y) 
print popt, pcov