方位角与径向速度的关系"/>
最小二乘法拟合方位角与径向速度的关系
# -*- coding: GB2312 -*-
"""
Created on Thu Jan 21 20:56:24 2016@author: Administrator
"""import numpy as np
from scipy.optimize import leastsq
import pylab as pl
import sysdef func(x, p):"""数据拟合所用的函数: a + b*sin(cx + d)"""a, b, c, d = preturn a + b*np.sin(c*x+d)def residuals(p, y, x):"""实验数据x, y和拟合函数之间的差,p为拟合需要找到的系数"""return y - func(x, p)file=open("E:\\fit\\AM_new.csv",'r')
dataLines = file.readlines()
angle = []
dataA = []
#dataB = []
#dataC = []
#dataD = []for line in dataLines:angleCur,dataACur,dataBCur,dataCCur,dataDCur = line.split(',')if angleCur != 'NaN':angle.append(float(angleCur)/180*np.pi)if dataACur != 'NaN':dataA.append(float(dataACur))#if dataBCur != 'NaN':#dataB.append(float(dataBCur))#if dataCCur != 'NaN':#dataC.append(float(dataCCur))#if dataDCur != 'NaN':#dataD.append(float(dataDCur))p0 = [3, 1, 1, 0] # 第一次猜测的函数拟合参数# 调用leastsq进行数据拟合
# residuals为计算误差的函数
# p0为拟合参数的初始值
# args为需要拟合的实验数据
plsq = leastsq(residuals, p0, args=(dataA, angle))print u"拟合参数", plsq[0] # 实验数据拟合后的参数pl.plot(angle, dataA, label="raw data")
pl.plot(angle, func(angle, plsq[0]), label="fitting data")
pl.legend()
pl.show()
更多推荐
最小二乘法拟合方位角与径向速度的关系
发布评论