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 相关文章推荐
python中的列表推导浅析
Apr 26 Python
Python2.x和3.x下maketrans与translate函数使用上的不同
Apr 13 Python
Python中不同进制的语法及转换方法分析
Jul 27 Python
详解Python3 中hasattr()、getattr()、setattr()、delattr()函数及示例代码数
Apr 18 Python
Python实现多进程的四种方式
Feb 22 Python
Python动态参数/命名空间/函数嵌套/global和nonlocal
May 29 Python
python excel转换csv代码实例
Aug 26 Python
Pytorch实现的手写数字mnist识别功能完整示例
Dec 13 Python
python 安装impala包步骤
Mar 28 Python
python 从list中随机取值的方法
Nov 16 Python
python Tkinter的简单入门教程
Apr 11 Python
Django如何与Ajax交互
Apr 29 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使用redis的几种常见操作方式和用法示例
2020/02/20 PHP
Alliance vs AM BO3 第二场2.13
2021/03/10 DOTA
javascript 多级checkbox选择效果
2009/08/20 Javascript
XMLHTTP 乱码的解决方法(UTF8,GB2312 编码 解码)
2011/01/12 Javascript
始终在屏幕中间显示Div的代码(css+js)
2011/03/10 Javascript
扩展Jquery插件处理mouseover时内部有子元素时发生样式闪烁
2011/12/08 Javascript
Javascript 面向对象(一)(共有方法,私有方法,特权方法)
2012/05/23 Javascript
jQuery创建平滑的页面滚动(顶部或底部)
2013/02/26 Javascript
JavaScript调用客户端Java程序的方法
2015/07/27 Javascript
Highcharts使用简例及异步动态读取数据
2015/12/30 Javascript
angularjs表格分页功能详解
2016/01/21 Javascript
解析NodeJs的调试方法
2016/12/11 NodeJs
nodejs中全局变量的实例解析
2017/03/07 NodeJs
基于Vue实现tab栏切换内容不断实时刷新数据功能
2017/04/13 Javascript
ES6学习之变量的两种命名方法示例
2017/07/18 Javascript
Javascript实现跨域后台设置拦截的方法详解
2017/08/04 Javascript
引入外部js脚本加载慢与页面白屏问题的解决
2018/12/10 Javascript
javascript用defineProperty实现简单的双向绑定方法
2020/04/03 Javascript
ant design中upload组件上传大文件,显示进度条进度的实例
2020/10/29 Javascript
python妹子图简单爬虫实例
2015/07/07 Python
Python爬虫之xlml解析库(全面了解)
2017/08/08 Python
python定时利用QQ邮件发送天气预报的实例
2017/11/17 Python
Pycharm新建模板默认添加个人信息的实例
2019/07/15 Python
Python如何使用BeautifulSoup爬取网页信息
2019/11/26 Python
numpy.ndarray 实现对特定行或列取值
2019/12/05 Python
python飞机大战pygame游戏框架搭建操作详解
2019/12/17 Python
TensorFlow 多元函数的极值实例
2020/02/10 Python
Python中SQLite如何使用
2020/05/27 Python
Diesel美国网上商店:意大利牛仔时装品牌
2020/12/10 全球购物
兼职学生的自我评价
2013/11/24 职场文书
公司庆典邀请函范文
2014/01/13 职场文书
四查四看整改措施
2014/09/19 职场文书
学校党委干部个人对照检查材料思想汇报
2014/10/09 职场文书
安全第一课观后感
2015/06/18 职场文书
学习弘扬焦裕禄精神心得体会
2016/01/23 职场文书
恶魔之树最顶端的三颗果实 震震果实上榜,第一可以制造岩浆
2022/03/18 日漫