Python图像处理之直线和曲线的拟合与绘制【curve_fit()应用】


Posted in Python onDecember 26, 2018

本文实例讲述了Python图像处理之直线和曲线的拟合与绘制。分享给大家供大家参考,具体如下:

在数据处理和绘图中,我们通常会遇到直线或曲线的拟合问题,python中scipy模块的子模块optimize中提供了一个专门用于曲线拟合的函数curve_fit()

下面通过示例来说明一下如何使用curve_fit()进行直线和曲线的拟合与绘制。

代码如下:

# -*- coding:utf-8 -*-
import numpy as np
import matplotlib.pyplot as plt
from scipy import optimize
#直线方程函数
def f_1(x, A, B):
  return A*x + B
#二次曲线方程
def f_2(x, A, B, C):
  return A*x*x + B*x + C
#三次曲线方程
def f_3(x, A, B, C, D):
  return A*x*x*x + B*x*x + C*x + D
def plot_test():
  plt.figure()
  #拟合点
  x0 = [1, 2, 3, 4, 5]
  y0 = [1, 3, 8, 18, 36]
  #绘制散点
  plt.scatter(x0[:], y0[:], 25, "red")
  #直线拟合与绘制
  A1, B1 = optimize.curve_fit(f_1, x0, y0)[0]
  x1 = np.arange(0, 6, 0.01)
  y1 = A1*x1 + B1
  plt.plot(x1, y1, "blue")
  #二次曲线拟合与绘制
  A2, B2, C2 = optimize.curve_fit(f_2, x0, y0)[0]
  x2 = np.arange(0, 6, 0.01)
  y2 = A2*x2*x2 + B2*x2 + C2
  plt.plot(x2, y2, "green")
  #三次曲线拟合与绘制
  A3, B3, C3, D3= optimize.curve_fit(f_3, x0, y0)[0]
  x3 = np.arange(0, 6, 0.01)
  y3 = A3*x3*x3*x3 + B3*x3*x3 + C3*x3 + D3
  plt.plot(x3, y3, "purple")
  plt.title("3water.com test")
  plt.xlabel('x')
  plt.ylabel('y')
  plt.show()
  return
plot_test()

拟合和绘制解果如下:

Python图像处理之直线和曲线的拟合与绘制【curve_fit()应用】

当然,curve_fit()函数不仅可以用于直线、二次曲线、三次曲线的拟合和绘制,仿照代码中的形式,可以适用于任意形式的曲线的拟合和绘制,只要定义好合适的曲线方程即可。

如高斯曲线拟合,曲线函数形式如下:

def f_gauss(x, A, B, C, sigma):
  return A*np.exp(-(x-B)**2/(2*sigma**2)) + C
Python 相关文章推荐
Django发送html邮件的方法
May 26 Python
让Python代码更快运行的5种方法
Jun 21 Python
python 类详解及简单实例
Mar 24 Python
Python实现控制台中的进度条功能代码
Dec 22 Python
Python使用re模块实现信息筛选的方法
Apr 29 Python
Python3多线程操作简单示例
May 22 Python
完美解决安装完tensorflow后pip无法使用的问题
Jun 11 Python
Laravel+Dingo/Api 自定义响应的实现
Feb 17 Python
对python特殊函数 __call__()的使用详解
Jul 02 Python
如何基于Python实现电子邮件的发送
Dec 16 Python
keras load model时出现Missing Layer错误的解决方式
Jun 11 Python
Python第三方包PrettyTable安装及用法解析
Jul 08 Python
python处理multipart/form-data的请求方法
Dec 26 #Python
Python实现的简单线性回归算法实例分析
Dec 26 #Python
Python基于聚类算法实现密度聚类(DBSCAN)计算【测试可用】
Dec 26 #Python
python使用knn实现特征向量分类
Dec 26 #Python
python调用staf自动化框架的方法
Dec 26 #Python
Django unittest 设置跳过某些case的方法
Dec 26 #Python
python 2.7 检测一个网页是否能正常访问的方法
Dec 26 #Python
You might like
php设计模式之单例模式使用示例
2014/01/20 PHP
php简单生成随机数的方法
2015/07/30 PHP
用于节点操作的API,颠覆原生操作HTML DOM节点的API
2010/12/11 Javascript
防止文件缓存的js代码
2013/01/10 Javascript
js获取本机的外网/广域网ip地址完整源码
2013/08/12 Javascript
jQuery中children()方法用法实例
2015/01/07 Javascript
jQuery右侧选项卡焦点图片轮播特效代码分享
2015/09/05 Javascript
JavaScript 封装一个tab效果源码分享
2015/09/15 Javascript
详解Javascript模板引擎mustache.js
2016/01/20 Javascript
浅谈jQuery双事件多重加载的问题
2016/10/05 Javascript
bootstrap table实现单击单元格可编辑功能
2017/03/28 Javascript
javascript如何用递归写一个简单的树形结构示例
2017/09/06 Javascript
无限循环轮播图之运动框架(原生JS实现)
2017/10/01 Javascript
微信小程序实现城市列表选择
2018/06/05 Javascript
vue 解决setTimeOut和setInterval函数无效报错的问题
2020/07/30 Javascript
如何搜索查找并解决Django相关的问题
2014/06/30 Python
浅谈Django REST Framework限速
2017/12/12 Python
win8下python3.4安装和环境配置图文教程
2018/07/31 Python
Linux下多个Python版本安装教程
2018/08/15 Python
使用python的pandas库读取csv文件保存至mysql数据库
2018/08/20 Python
python 文件查找及内容匹配方法
2018/10/25 Python
Python文本处理简单易懂方法解析
2019/12/19 Python
浅析matlab中imadjust函数
2020/02/27 Python
python zip,lambda,map函数代码实例
2020/04/04 Python
Python脚本破解压缩文件口令实例教程(zipfile)
2020/06/14 Python
keras做CNN的训练误差loss的下降操作
2020/06/22 Python
树莓派升级python的具体步骤
2020/07/05 Python
Python内置函数property()如何使用
2020/09/01 Python
爱情保证书范文
2014/02/01 职场文书
汽车促销活动方案
2014/03/31 职场文书
小学学习雷锋活动总结
2014/07/03 职场文书
好媳妇事迹材料
2014/12/24 职场文书
浅谈JS和Nodejs中的事件驱动
2021/05/05 NodeJs
关于Numpy之repeat、tile的用法总结
2021/06/02 Python
 Python 中 logging 模块使用详情
2022/03/03 Python
使用CSS实现百叶窗效果示例代码
2023/05/07 HTML / CSS