저는 scipy (scipy.optimize.curve_fit)를 사용하여 파이썬 프로그램을 작성하고 있습니다. 데이터 집합에 여러 개의 커브를 맞추고이를 합계해야합니다. 첫 번째 단계는 모든 최대 값을 찾는 것입니다. 적어도 하나는 있지만 일반적으로 더 많을 것입니다. 나는 다음과 같은 것을 일반화하고 싶다.람다 용 변수 변경
if (len(Maxima) == 1):
f = lambda a, b, c : a * exp((b * x) + c)
else if (len(Maxima) == 2):
f = lambda a, b, c, d, e, f : (a * exp((b * x) + c)) + (d * exp((e * x) + f)
등등. curve_fit은 (3 * Maxima) 매개 변수가 있다는 것을 인식하여 필요할 때 찾을 수 있습니다. 위의 문장을하는 것은 실용적이지 않으므로 20 개 정도의 곡선이있을 수 있습니다.
도움을 주시면 감사하겠습니다.
감사합니다.
편집 : 죄송합니다. 기능이 최대치에 종속되어 있습니다. 실제로 각 맥시마에 집중된 가우스 분포입니다.
e.e. 용어는 실제로
f = (a * (Gamma ** 2)/(((E - Maxima[i])**2) + (b**2)))
이고 E는 args가 시작해야하는 독립 변수입니다.
len(Maxima) == 2
인수에 대한 예를 들어
는 내 실수에 대한
E, a0, b0, Maxima[0], a1, b1, Maxima[1]
죄송 할 것이다.
Edit2가 :
나는 이런 식으로 뭔가를 생각하고 있어요 :
GaussianDistribution = lambda E, E0, I0, Sigma : (I0 * np.exp(-(((E - E0)/Sigma)**2)))
args = tuple([long] * ((len(Maxima) * 3) + 1))
d1, d2 = sc.curve_fit(GaussianDistribution(*args), Data[:, 0], Data[:, 1])
죄송합니다. 일부 정보를 놓치 셨습니다. 여기에 게시하기에는 너무 길기 때문에 소개에 추가했습니다. – Jacob