2014-01-16 2 views
3

저는이 기능을 처음 사용하고 몇 시간 동안 이것을 보았습니다. 다른 최소 제곱 피팅 예제와 비교해 보았지만 예제 코드는 클릭하지 않는 것 같습니다. http://docs.scipy.org/doc/scipy/reference/tutorial/optimize.html 가입일최소 사각 피팅, python scipy에 대한 혼동스러운 할당 쿼리

코드는 왜 3 개체, A, K, P 세타가 할당 될 수있다, 즉, 잔차 함수에서

>>> from numpy import * 
>>> x = arange(0,6e-2,6e-2/30) 
>>> A,k,theta = 10, 1.0/3e-2, pi/6 
>>> y_true = A*sin(2*pi*k*x+theta) 
>>> y_meas = y_true + 2*random.randn(len(x)) 

>>> def residuals(p, y, x): 
...  A,k,theta = p 
...  err = y-A*sin(2*pi*k*x+theta) 
...  return err 

>>> def peval(x, p): 
...  return p[0]*sin(2*pi*p[1]*x+p[2]) 

>>> p0 = [8, 1/2.3e-2, pi/3] 
>>> print(array(p0)) 
[ 8.  43.4783 1.0472] 

>>> from scipy.optimize import leastsq 
>>> plsq = leastsq(residuals, p0, args=(y_meas, x)) 
>>> print(plsq[0]) 
[ 10.9437 33.3605 0.5834] 

>>> print(array([A, k, theta])) 
[ 10.  33.3333 0.5236] 

>>> import matplotlib.pyplot as plt 
>>> plt.plot(x,peval(x,plsq[0]),x,y_meas,'o',x,y_true) 
>>> plt.title('Least-squares fit to noisy data') 
>>> plt.legend(['Fit', 'Noisy', 'True']) 
>>> plt.show() 

입니까? 어떤 도움을 주신다면

답변

3

잔류 물 함수는 의 원소를 검색하기 위해 tuple unpacking을 사용합니다. 튜플 풀기의 간단한 예는 수 잔차의 경우

x = ['One', 'Two', 'Three'] 

a,b,c = x 

print(a) # One 

는 (각각 A, k, theta p[0], p[1], p[2]보다 오히려 사용), 읽기 쉽게 기능.

관련 문제