원본 소스 파일은 <div><table border="1" width="100%" cellpadding="3" cellspacing="0" style="border-style:solid;border-collapse:collapse;"><tbody><tr><td>import openpyxl <div>import matplotlib.pyplot as plt</div> <div>import numpy as np</div> <div>from scipy.optimize import curve_fit</div> <div><br></div> <div>#엑셀 파일을 불러옴.</div> <div>excel_result = openpyxl.load_workbook("C:\\Dev\\GraduationThesis\\result_1.xlsx")</div> <div>sheet_result = excel_result['Sheet2']</div> <div><br></div> <div>def sheet_value(r, c):</div> <div><span style="white-space:pre;"> </span>#셀 값을 불러옴</div> <div><span style="white-space:pre;"> </span>return sheet_result.cell(row=r, column=c).value</div> <div><br></div> <div>def gauss_func(x, a, b, c):</div> <div><span style="white-space:pre;"> </span>#gaussian function</div> <div><span style="white-space:pre;"> </span>return a*np.exp(-(x-b)**2/(2*c**2))</div> <div><br></div> <div>def lorenzian_func(x, x0, r):</div> <div><span style="white-space:pre;"> </span>#lorenzian function</div> <div><span style="white-space:pre;"> </span>return (r**2/(((x-x0)**2)+r**2))/(np.pi*r)</div> <div><br></div> <div>from scipy.misc import factorial</div> <div><br></div> <div>def poisson_func(x, lamb):</div> <div><span style="white-space:pre;"> </span>#poisson fuction</div> <div><span style="white-space:pre;"> </span>return (lamb**x/factorial(x)) * np.exp(-lamb) </div> <div><br></div> <div>index = 1</div> <div>list_Hz = list()</div> <div>list_Mag = list()</div> <div>#엑셀의 각 데이터를 리스트 형식으로 바꿈</div> <div>while True:</div> <div><span style="white-space:pre;"> </span>if sheet_value(index, 1) == None:</div> <div><span style="white-space:pre;"> </span>break;</div> <div><span style="white-space:pre;"> </span>list_Hz.append(sheet_value(index, 1))</div> <div><span style="white-space:pre;"> </span>list_Mag.append(sheet_value(index, 2))</div> <div><span style="white-space:pre;"> </span>index += 1</div> <div><br></div> <div>#리스트를 array형태로 바꿈</div> <div>x = np.array(list_Hz)</div> <div>y = np.array(list_Mag)</div> <div><br></div> <div>#초기값</div> <div>init = [10]</div> <div><br></div> <div>#fitting</div> <div>popt, pcov = curve_fit(gauss_func, x, y)</div> <div><br></div> <div>plt.plot(x, y, linewidth=2, color='blue')</div> <div>plt.plot(x, gauss_func(x, *popt), color = 'green', linewidth=2)</div> <div>plt.legend(['Data', 'fitting'], loc=2)</div> <div><br></div> <div>plt.show()</div> <div><br></div> <div>excel_result.close()</div></td></tr></tbody></table><br></div> <div>엑셀에서 데이터 값을 불러온후 그 값들을 어떤 함수의 형태로 피팅하여야 하는데</div> <div><br></div> <div>먼저 가우시안 분포로 해봤을때 위치는 비슷하지만 제대로 피팅이 되지않아서</div> <div><br></div> <div>로렌치안하고 푸아송 분포로 해보려고 하는데요</div> <div><br></div> <div>그나마 로렌치안은 스케일은 비슷한거 같은데 푸아송분포로는 스케일이 아예 다르게 나오더라구요.</div> <div><br></div> <div>혹시 로렌치안하고 푸아송 분포는 curve_fit으로 피팅하지 못하는건가 싶어서요!</div> <div><br></div> <div>댓글로 가우시안 로렌치안 푸아송 분포로 피팅했을때의 이미지를 올리겠습니다.</div> <div><br></div> <div>한번만 봐주세요 ㅠㅠ</div> <div><br></div> <div>조공으로 공부할만한 다양한 무료 자료가 있는 링크를 올리겠습니다.</div> <div><br></div>
댓글 분란 또는 분쟁 때문에 전체 댓글이 블라인드 처리되었습니다.