Python也可以像MATLAB一样进行函数拟合,在拟合线性函数时numpy.polyfit使用很方便.但是在拟合非线性函数时,Python就不如MATLAB使用方便快捷。不过Scipy.optimize.curve_fit也提供了基于最小二乘法的拟合,只是需要自己定义函数,不如MATLAB的cftool工具箱方便。
本文将就拟合sine函数为例,对照程序,总结scipy.optimize.curve_fit的技巧,以供以后使用时参考。
首先程序开头少不了调用函数库
import scipy as sp
from scipy.optimize import curve_fit # 在拟合时需要此函数库
import numpy as np
import matplotlib.pylab as plt
from math import *
plt.close('all')
然后读取数据并作图,本例中使用的横坐标数据为L,纵坐标数据为P
filename = 'coupler_2D_couplingLength.txt'
L = []
P = []
with open(filename, 'r') as file_to_read:
while True:
lines = file_to_read.readline()
if not lines:
break
pass
L_tmp, P_tmp = [float(i) for i in lines.split()]
L.append(L_tmp)
P.append(P_tmp)
pass
L = np.array(L)
P =