Python曲线拟合

 

import numpy as np 
import matplotlib.pyplot as plt 
from pylab import mpl
mpl.rcParams['font.sans-serif'] = ['SimHei'] # 指定默认字体
plt.rcParams['axes.unicode_minus']=False    #解决负数坐标显示问题 
#x的个数决定了样本量
x = np.arange(-1,1,0.02) 
#y为理想函数 
y = 2*np.sin(x*2.3)+0.5*x**3
#y1为离散的拟合数据
y1 = y+0.5*(np.random.rand(len(x))-0.5)
z1 = np.polyfit(x, y, 6)
# 生成多项式对象
p1 = np.poly1d(z1)
pp1=p1(x)
##################################
plt.plot(x,y,color='g',linestyle='-',marker='',label=u'理想曲线') 
plt.plot(x,y1,color='m',linestyle='',marker='o',label=u'拟合数据')
plt.plot(x,pp1,color='b',linestyle='-',marker='.',label=u"拟合曲线") 
# 把拟合的曲线在这里画出来
plt.legend(loc='upper left')
plt.show()
import numpy as np 
import matplotlib.pyplot as plt 
from pylab import mpl
data = np.load('data/mygood299.npy') #final37
data = data.reshape(-1,3,60)
data = data[0:100,:,0:60]
for i in range(len(data)):
    #data[i]为一个分叉
    #第一个分支拟合曲线
    x0 = data[i][0][0:30]
    y0 = data[i][0][30:60]
    z0 = np.polyfit(x0,y0,6)
    f0 = np.poly1d(z0)
    yy0 = f0(x0)
    plt.scatter(x0,y0,color='red')
    plt.plot(x0,yy0,color='blue')
    #第二个分支拟合曲线
    x1 = data[i][1][0:30]
    y1 = data[i][1][30:60]
    z1 = np.polyfit(x1,y1,10)
    f1 = np.poly1d(z1)
    yy1 = f1(x1)
    plt.scatter(x1,y1,color='red')
    plt.plot(x1,yy1,color='blue')
    #第三个分支拟合曲线
    x2 = data[i][2][0:30]
    y2 = data[i][2][30:60]
    z2 = np.polyfit(x2,y2,6)
    f2 = np.poly1d(z2)
    yy2 = f2(x2)
    plt.scatter(x2,y2,color='red')
    plt.plot(x2,yy2,color='blue')
    plt.show()
######################################################################
# for i in range(len(data)):
#     plt.scatter(data[i][0][0:30],data[i][0][30:60],color='red')
#     plt.scatter(data[i][1][0:30],data[i][1][30:60],color='blue')
#     plt.scatter(data[i][2][0:30],data[i][2][30:60],color='green')
#     plt.show()

https://www.jb51.net/article/140135.htm

 

  • 4
    点赞
  • 43
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值