2017-02-08 1 views
0

많은 코드를 읽고 커브를 그리는 데 다음 코드가 있습니다. "독서와 플로팅"은 이미 꽤 효과적입니다.lmfit matplot - 동시에 여러 다른 파일의 많은 커브를 피팅합니다.

문제는 이제 같은 플롯에서 모든 커브의 피팅을 만들고 싶다는 것입니다. 이 코드는 이미 커브를 맞추기 위해 관리되지만 출력은 하나의 배열에 모두 들어 있습니다. 분리 할 수 ​​없기 때문에 출력 할 수 없습니다. 나는 lmfit에서 그 곡선에 가장 적합한을 줄 것 "파일"result.best_fit을 인쇄 할 물어 보면

#!/usr/bin/python 

import matplotlib.pyplot as plt 
from numpy import exp 
from lmfit import Model 


    def read_files(arquivo): 
    x = [] 
    y = [] 
    abscurrent = [] 
    time = [] 

    data = open(arquivo, 'r') 
    headers = data.readlines()[60:] 

    for line in headers: 
      line = line.strip() 
      X, Y, ABS, T = line.split('\t') 
      x.append(X) 
      y.append(Y) 
      abscurrent.append(ABS) 
      time.append(T) 

      data.close() 


    def J(x, j, n): 
      return j*((exp((1.6e-19*x)/(n*1.38e-23*333)))-1) 

    gmod = Model(J) 
    result = gmod.fit(abscurrent, x=x, j=10e-10, n=1) 


    return x, y, abscurrent, time  

    print(result.fit_report()) 

, 나는 다른 값으로, 12 번이 결과를 (I 12 개 곡선이) 얻을 :

- Adding parameter "j" 
- Adding parameter "n" 
[ 4.30626925e-17 3.25367918e-14 9.60736218e-14 2.20310475e-13 
    4.63245638e-13 9.38169958e-13 1.86480698e-12 3.67881758e-12 
    7.22634738e-12 1.41635088e-11 2.77290634e-11 5.42490983e-11 
    1.06108942e-10 2.07520542e-10 4.05768903e-10 7.93323537e-10 
    1.55126521e-09 3.03311029e-09 5.93085363e-09 1.16032067e-08 
    2.26884736e-08 4.43641560e-08 8.67362753e-08 1.69617697e-07 
    3.31685858e-07 6.48478168e-07] 
- Adding parameter "j" 
- Adding parameter "n" 
[ 1.43571772e-16 1.00037588e-13 2.92349492e-13 6.62623404e-13 

이것은 코드가 피팅을 올바르게 계산한다는 것을 의미하며,이 출력을 어떻게 든 커브로 그려 내야합니다. [] 사이의 각 값 집합은 내가 그릴 수있는 방식으로 분리하려는 것입니다.

답변

0

내가 게시 한 코드가 출력물을 어떻게 생산하는지 알 수 없습니다. 나는 26 값의 배열을 출력하는 print() 함수를 보지 못했지만 목록의 길이가 x, yabscurrent 일 수 있다고 생각할 것입니다 - print(result.fit_report())의 출력이 아니며 보지 못합니다. 그 결과.

12 개의 독립적 인 커브가 있다고는 보이지 않습니다.

또한 result.best_fit은 파일이 아니며 배열입니다.

+0

인쇄물이이 코드에 없으므로 시도했음을 의미합니다. :) 필자는 각 커브에 대해'result01'을 gmod.fit (abscurrent01, x = x01, j = 10e-10, n = 1)로 설정 한 후'결과 '와 관련된 코드의 일부를 추가하여 해결했습니다. 그렇게함으로써 나는'result01.best_fit'를 호출 할 수 있었다. 너무 길기 때문에 내가 게시 한 코드는 완전하지 못했다. 그러나 그것이 의미하는 바를 생성한다. –

+0

미안하지만 나는 여전히 너를 이해하지 못해. 그러나 당신이 가진 모든 문제를 해결했음을 기뻐합니다. 그렇지 않은 경우 실제 코드의 완전한 최소 예제를 게시하십시오. –