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中使用base64模块来处理base64编码的方法
Jul 01 Python
详解Python中的静态方法与类成员方法
Feb 28 Python
import的本质解析
Oct 30 Python
Python基于csv模块实现读取与写入csv数据的方法
Jan 18 Python
Python实现的简单计算器功能详解
Aug 25 Python
在python中以相同顺序shuffle两个list的方法
Dec 13 Python
Python redis操作实例分析【连接、管道、发布和订阅等】
May 16 Python
Python csv模块使用方法代码实例
Aug 29 Python
python性能测量工具cProfile使用解析
Sep 26 Python
Python 操作 MySQL数据库
Sep 18 Python
next在python中返回迭代器的实例方法
Dec 15 Python
python爬虫selenium模块详解
Mar 30 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无刷新上传文件实现代码
2011/09/19 PHP
IIS安装Apache伪静态插件的具体操作图文
2013/07/01 PHP
php通过淘宝API查询IP地址归属等信息
2015/12/25 PHP
PHP实现批量重命名某个文件夹下所有文件的方法
2017/09/04 PHP
锋利的jQuery jQuery中的DOM操作
2010/03/21 Javascript
防止页面被iframe(兼容IE,Firefox火狐)
2010/07/04 Javascript
javascript学习笔记(一) 在html中使用javascript
2012/06/18 Javascript
Node.js中对通用模块的封装方法
2014/06/06 Javascript
jquery移动节点实例
2015/01/14 Javascript
JavaScript数组去重由慢到快由繁到简(优化篇)
2016/08/26 Javascript
Vue.js每天必学之表单控件绑定
2016/09/05 Javascript
jQuery分页插件jquery.pagination.js使用方法解析
2017/02/09 Javascript
基于vue开发的在线付费课程应用过程
2018/01/25 Javascript
基于vue的验证码组件的示例代码
2019/01/22 Javascript
JS中的算法与数据结构之链表(Linked-list)实例详解
2019/08/20 Javascript
layui问题之模拟table表格中的选中按钮选中事件的方法
2019/09/20 Javascript
vue实现简单全选和反选功能
2020/09/15 Javascript
python算法学习之基数排序实例
2013/12/18 Python
python实现文件名批量替换和内容替换
2014/03/20 Python
Python+Socket实现基于UDP协议的局域网广播功能示例
2017/08/31 Python
python实现聊天小程序
2018/03/13 Python
python爬虫实例详解
2018/06/19 Python
python顺序执行多个py文件的方法
2019/06/29 Python
Python 日期区间处理 (本周本月上周上月...)
2019/08/08 Python
python 实现二维列表转置
2019/12/02 Python
tensorflow保持每次训练结果一致的简单实现
2020/02/17 Python
python中pyplot基础图标函数整理
2020/11/10 Python
工厂门卫岗位职责
2013/11/25 职场文书
外贸业务员求职信
2014/06/16 职场文书
活动总结报告怎么写
2014/07/03 职场文书
综治维稳工作承诺书
2014/08/30 职场文书
领导干部学习“三严三实”思想汇报
2014/09/15 职场文书
财政局党的群众路线教育实践活动整改方案
2014/09/21 职场文书
群众路线四风对照检查材料
2014/11/04 职场文书
欠条格式范本
2015/07/03 职场文书
2016猴年春节慰问信
2015/11/30 职场文书