系列文章目录


文章目录

  • 系列文章目录
  • 前言
  • 一、常用拟合方法
    • 1. 线性拟合
    • 2.多项式拟合(二次)
    • 3.多项式拟合(三次)
    • 4.指数拟合
    • 5.高斯拟合
  • 二、代码实现

前言

在自动驾驶项目中,经常涉及到一些曲线拟合的工作,现在想整理一下这些基础的方法。


一、常用拟合方法

1. 线性拟合

def f_1(self, x, A, B):return A * x + B

2.多项式拟合(二次)

def f_2(self, x, A, B, C):return A * x * x + B * x + C

3.多项式拟合(三次)

def f_3(self, x, A, B, C, D):return A * x * x * x + B * x * x + C * x + D

4.指数拟合

def f_ln(self, x, A, B):return A * np.log(x) + B

5.高斯拟合

def f_ln(self, x, A, B):return A * np.log(x) + B

二、代码实现

在这里为了方便拟合的运算,我们使用了SCIPY的包用于拟合曲线,后续别的同学也可以利用这个包进行别的函数的拟合。

import numpy as np
from scipy import optimize

然后就是定义调用函数了,为了方便后续的使用,我们定义函数Fitting。

    def Fitting(self, model="line"):info = []if model is "line":A1, B1 = optimize.curve_fit(self.f_1, self.x_0, self.y_0)[0]info = [A1, B1]y_1 = A1 * self.x_1 + B1elif model is "square":A1, B1, C1 = optimize.curve_fit(self.f_2, self.x_0, self.y_0)[0]info = [A1, B1, C1]y_1 = A1 * self.x_1 * self.x_1 + B1*self.x_1 + C1elif model is "cube":A1, B1, C1, D1 = optimize.curve_fit(self.f_3, self.x_0, self.y_0)[0]info = [A1, B1, C1, D1]y_1 = A1 * self.x_1 * self.x_1 * self.x_1 + B1 * self.x_1 * self.x_1 + C1* self.x_1 + D1elif model is "gauss":A1, B1, C1, sigma = optimize.curve_fit(self.f_gauss, self.x_0, self.y_0)[0]info = [A1, B1, C1, sigma]y_1 = A1 * np.exp(-(self.x_1 - B1) ** 2 / (2 * sigma ** 2)) + C1elif model is "ln":A1, B1 = optimize.curve_fit(self.f_ln, self.x_0, self.y_0)[0]info = [A1, B1]y_1 = A1 * np.log(self.x_1) + B1return y_1, info

最后,完成了函数的定义准备工作以后我们来看一下我们这几种曲线的拟合方法最后的结果吧!

import cruveFitting
import numpy as np
import matplotlib.pyplot as pltplt.figure()x0 = [1, 2, 3, 4, 5]
y0 = [1, 3, 8, 18, 36]
x1 = np.arange(1, 6, 0.01)
plt.scatter(x0[:], y0[:], 25, "red")Fitting = cruveFitting.CruveFitting(x0, y0, x1)y_line, parameters_line = Fitting.Fitting(model="line")
y_square, parameters_square = Fitting.Fitting(model="square")
y_cube, parameters_cube = Fitting.Fitting(model="cube")
y_gauss, parameters_gauss = Fitting.Fitting(model="gauss")
y_ln, parameters_ln = Fitting.Fitting(model="ln")plt.plot(x1, y_line, "blue")
plt.plot(x1, y_square, "yellow")
plt.plot(x1, y_cube, "green")
plt.plot(x1, y_gauss, "orange")
plt.plot(x1, y_ln, "gray")plt.title("test")
plt.xlabel('x')
plt.ylabel('y')plt.show()

其中,蓝色是线性拟合,淡黄色是多项式(二次)拟合,绿色是多项式(三次)拟合,橘黄色是高斯拟合,灰色是对数拟合。

拟合方法是一种可以很好的查看出数据趋势的一种方法,同样也可以用在数据近似,差值等方法中。

自动驾驶中常用曲线拟合方法相关推荐

  1. 自动驾驶中常用的四类机器学习算法

    来源:智车科技 机器学习算法已经被广泛应用于自动驾驶各种解决方案,电控单元中的传感器数据处理大大提高了机器学习的利用率,也有一些潜在的应用,比如利用不同外部和内部的传感器的数据融合(如激光雷达.雷达. ...

  2. 自动驾驶中常用传感器作用

    自动驾驶系统中,各类传感器扮演着重要的角色,它们各自负责收集不同类型的环境信息. 各类传感器在自动驾驶系统中的主要作用: 1. 摄像头(视觉传感器) 摄像头主要用于目标检测.识别和跟踪,包括: 行人和 ...

  3. 一文读懂自动驾驶中常用的定位算法之NDT点云配准算法

    文中所用图片如无声明来源网络和论文. Paper: The Three-Dimensional Normal-Distributions Transform- an Efficient Represe ...

  4. 自动驾驶中的激光雷达目标检测的原理和数据特点

    转自:http://www.elecfans.com/d/892365.html (侵删) 安全性是自动驾驶中人们最关注的问题之一. 在算法层面,无人车对周围环境的准确感知是保证安全的基础,因此感知算 ...

  5. 自动驾驶中基于地图的视觉定位方法

    点云PCL免费知识星球,点云论文速读. 文章:Visual Map-based Localization applied to Autonomous Vehicles 作者:JEAN-ALIX DAV ...

  6. 城市自动驾驶中利用停车标志的自动标定方法

    点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 作者丨paopaoslam 来源丨泡泡机器人SLAM 点击进入->3D视觉工坊学习交流群 标题: ...

  7. 自动驾驶中的车道线跟踪技术

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 本文转自:AI算法与图像处理 本文讨论的重点跟踪算法如何应用在车道 ...

  8. 计算机视觉方向简介 | 自动驾驶中的车道线跟踪技术

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达本文转自|人工智能与算法学习 本文讨论的重点跟踪算法如何应用在车道线 ...

  9. 综述|寻找自动驾驶中的关键场景

    作者丨黄浴@知乎 来源丨https://zhuanlan.zhihu.com/p/426572273 编辑丨3D视觉工坊 arXiv在2021年10月16日上传论文"Finding Crit ...

最新文章

  1. ATS中的命令行工具解读
  2. Python中通过lambda抛异常的奇技淫巧
  3. Spring Boot 获取 Bean 的 3 种方式!还有谁不会?
  4. JVM04内存结构概述
  5. Web应用架构-Full-text Search Service
  6. HDU 2841 Visible Trees(容斥)题解
  7. mysql+json插入_MySQL对JSON数据的增删改查
  8. 自由软件基金会称DRM被用于锁定、控制和监视用户
  9. (六)使用ResNet50迁移学习进行COVID-19诊断:从头开始构建深度学习网络
  10. hadoop hdfs 集群配置
  11. python集成开发环境运行快捷键_Python初学者选择集成开发环境必看 python开发
  12. 学python能做什么类型的工作-python是什么?python可以用来干什么?
  13. 【转】context和getApplicationContext()介绍
  14. Maven中settings文件详解
  15. Java的字节流和字符流
  16. 现代 Web 开发的现状与未来
  17. 计算机音乐制作手册,计算机音乐制作手册
  18. 击溃一个30岁中年人的不仅仅是速度
  19. HOUDINI TIP | USING HOU MODULE IN VISUAL STUDIO CODE_手动在vscode里设置houdiniPython模块
  20. 关于leanote(蚂蚁笔记私服搭建安装)步骤

热门文章

  1. ctfshow信息收集web1~10
  2. uniapp 404页面
  3. 计算机病毒的格式是什么样的,文件病毒的格式是什么
  4. Redhat 7 下Mysql8.0.19安装配置图文详解(配合使用 centos YUM源)
  5. matlab仿真匹配滤波器,应用于雷达系统匹配滤波器的matlab仿真
  6. QT实现简易的计算器
  7. 《第一行代码 Android 第2版》下载
  8. linux tar 解压命令总结
  9. 微信iPad协议稳定
  10. CMMI之度量与分析(MA)