2017-12-02 8 views
1
def linearize(p, x): 
    return p[0] * x**p[1] 
def error(p, x, y):  
    return (np.log10(y) - np.log10(linearize(p, x))) 


from scipy import optimize 

args = freq_log[1:9063], np.abs(spec_log[1:9063]) 
qout, success = optimize.leastsq(error, 
          [1e5,-0.8], 
          args=args, 
          maxfev=3000) 

fig,ax1=plt.subplots(figsize=(5,5)) 

spec = ax1.plot(freq_log,np.abs(spec_log), 'o', alpha=0.3) 
approx = ax1.plot(freq_log[1:], linearize(qout, freq_log[1:]), linewidth=3) 

내가 코드를 복제하려고, 나는이 사건에서와 선형화 무엇인지 이해하려고 노력하고, 그것은 무엇이 인수 및 반환은 다음과 같은 오류를 해결하기 위해 무엇을이 경우 선형화는 무엇을합니까?

현재는 반환 런타임 오류와 ValueError를

RuntimeWarning: divide by zero encountered in power return p[0] * x**p[1] 
RuntimeWarning: invalid value encountered in power return p[0] * x**p[1] 
ValueError: object too deep for desired array 

내 주요 관심사는 그 누구도 날이 오류를 일으키는 방법과 그것을 해결하기 위해 무엇 이해하는 데 도움이, 처음 네 줄입니까?

전체 코드는 그럼에도 불구하고, 그것이 알고 가치가 https://github.com/seg/tutorials-2017/blob/master/1710_Colored_inversion/Colored_inversion_notebook.ipynb

답변

0

@ 2 자세한 설명이 너무 긴 것입니다.

온라인으로이 짧은 예제를 발견했습니다.

여기에서 복사하여 붙여 넣기하는 대신 링크를 나가십시오.

http://www.scipy-lectures.org/intro/summary-exercises/optimize-fit.html

여기 선형화가 다음 오류를 평가하는 데 사용되는 전달되는 데이터의 전체 잡음을 반환하려고하는, 그리고 소리로 다음leastsq는, 초기의 제곱의 합을 최소화 파형.

+0

감사합니다. 선형화를위한 p [0]과 p [1]이 무엇인지 간략하게 설명해 주시겠습니까? 이 경우 0으로 나누기를 일으키는 것은 따르지 않습니다. – user3736201

+0

x 값이어야합니다. x 값이 0이 아닌지 확인하는 것이 좋습니다. 아마도 매우 작은 숫자로 대체하고 오류가 지속되는지 확인하십시오. 또한, 나는 조금 주위에 냄새가났다. 그리고 그 오류는 이전 버전의 scipy와 numpy로 인한 것일 수도있다. 그래서 당신도 같은 업데이 트하는 것이 좋습니다. –

+0

아. 당신은 정확합니다, 코드의 나머지 부분과 독립적으로 섹션을 실행 해 보았지만 정상적으로 작동합니다. 그러나, 나는 x가 무엇으로 정의되어 있는지 모른다. 나는 특별히 x를 설정하지 않았다. 이것은 원형 질문 일 수 있지만이 경우에 정의 된 x는 무엇입니까? 그 정보는 문제를 완전히 해결하는 데 도움이 될 것입니다. – user3736201