关键字:基函数,控制点,节点

参考:http://www.docin.com/p-1511846558.html

前言:之前写写过一篇B样条曲线,这篇是原文的深度扩展,是针对B样条曲线的一种特殊情况,三次B样条,讨论了其插值和误差分析,添加了一些个人总结。

思路:根据已知的型值点(就是给出的已知的数据点),采用均匀参数法构造节点矢量,得到基函数的表达形式,然后利用逼近思想构造三对角阵,利用追赶法求控制点,最后拟合。

一、目的和思想

由已知的观测点,为物理量(未知量)建立一个简单的,连续的解析模型,根据该模型推测在非观测点的特性。

B样条相比于分段线性插值,在节点处可导,具有光滑性,这是它的优点。

构造思想在于通过给定的型值点反求出控制点,从而拟合曲线,可以通过更改控制点改变曲线形状。

实际B样条计算的两种情况:第一种就是本文的构造思想(上一行)。第二种是直接给出控制点。

二、定义

2.1 B样条

控制点为Pi(i=0,1,2,....,n),p次B样条曲线方程为

是p次B样条基函数,节点矢量

节点矢量的选取方法为:均匀参数法,积累弦长法,向心参数法(这里选择均匀参数法)

注意这里的u是一个点,可能位于的一个数,而不是像的一个向量。

为了将曲线的首末端点分别与首末数据点对应,需要将首末端点都做p+1重,即

注意对于p次样条,有

三、3次B样条基的计算

根据第二条性质,时,

p=3时,

其中每一项分别如下:

四、3次B样条控制点的计算

假设给定一组型值点和节点矢量,首末是四重,即,首末分别与对应。如下图所示,那么内部节点对应。即对应,对应,则r-0+1=m-3-3+1,r=m-6。所以如前文所述,这里控制节点的个数为n+1,因为m=n+p+1,所以m=n+4,那么r=n-2。

那么B样条曲线的方程为

为了求控制点Pi,采用非节点条件,将首末型值点分别对应于参数,使得所取得的参数分别接近于,有

其中

化成三对角矩阵,用追赶法求解

五、B样条曲线误差分析

对于每个小区间上的点u,可以表示为

B样条曲线上一点为,注意这里的P的是二维的,第二个下标表示是第一维度的还是第二维度的。那么

继续化简,

如果分段线性插值上的点为,那么

那么

在每一个区间上,3次B样条曲线与折线段都会有一个或者两个功高,功高可以衡量误差的大小

那么

根为

B样条曲线与折线段出现一个功高,出现两个功高,曲线与折线段有交点,交点参数为曲线上点的斜率与原型点连线斜率相等时功高最大,可以用牛顿切线法找到功高最大点处,计算功高大小,判断插值好坏。

三次B样条插值和误差分析相关推荐

  1. 三次样条python_三次hermit样条插值python

    {{em}在这里举例说明了{em}在一些给定的维数之间的导数的用法.在import numpy as np from scipy import interpolate def sampleCubicS ...

  2. 非均匀三次B样条曲线插值实现及MATLAB代码

    这篇博客跟我上一篇博客<均匀三次B样条曲线插值实现及MATLAB代码>的内容有点像,只是在基函数的计算上不同,造成均匀/非均匀的区别. 参考资料: [1](这个PPT讲得很通俗,但对于多插 ...

  3. 三次B样条曲线拟合算法

    1 三次B样条曲线方程 B样条曲线分为近似拟合和插值拟合,所谓近似拟合就是不过特征点,而插值拟合就是通过特征点,但是插值拟合需要经过反算得到控制点再拟合出过特征点的B样条曲线方程.这里会一次介绍两种拟 ...

  4. B-spline三次B样条曲线方程

    一.B-样条基函数 它有两条贝塞尔基函数所没有的特性, (1)定义域被节点细分(subdivided): (2) 基函数不是在整个区间非零.实际上,每个B样条基函数在附近一个子区间非零, 因此,B-样 ...

  5. python数据增强三种方法

    程序1: # -*- coding:utf-8 -*- """数据增强1. 色彩抖动 color jittering2. 噪声扰动 noise3. 旋转变换/反射变换 R ...

  6. 均匀三次B样条曲线插值实现及MATLAB代码

    参考资料: [1](这个PPT讲得很通俗,但对于多插值点分段曲线的内容漏讲了一个知识点)三次周期B样条曲线的算法 - 百度文库 (baidu.com) [2](这个介绍只有两个插值点的三次B样条曲线, ...

  7. 【Matlab】三次B样条基函数插值求解泛函极值问题

    --------------------------------------------------------------------------------------------- 前言:博主是 ...

  8. 基于MATLAB的B样条插值拟合算法与分段多项式(附完整代码)

    一. B样条函数 B样条函数的MATLAB代码如下: S=spapi(k,x,y) %k为用户选定的B样条阶次,一般以4和5居多 例题1 分别用B样条函数对y和f(x)中的自选数据进行5次B样条函数拟 ...

  9. 基于matlab的数值分析实例研究,基于MATLAB的数值分析答辩.ppt

    单片机论文,优秀毕业论文,外文翻译,毕业论文设计,毕业过关论文,毕业设计,毕业设计说明,毕业论文,单片机毕业论文,基于单片机毕业论文,毕业论文终稿,毕业论文初稿,毕业论文设计,单片机论文,本文档支持完 ...

最新文章

  1. 队列——PowerShell版
  2. 最新开源无监督单目深度估计方法,解决复杂室内场景难训练问题,效果性能远超SOTA...
  3. 记录rewrite url我之前不知道的地方
  4. zbb20170613 linux 安装 mysql
  5. 程序中下载采购申请的附件
  6. 转载 一篇UI规范文件
  7. html如何添加文档,如何在HTML中添加行
  8. 敏捷开发FAQ[转]
  9. 当多个类之间有继承关系时,创建子类对象会导致父类初始化块的执行。
  10. 单总线led驱动芯片WS2811在linux下的驱动
  11. Redis入门总结(三):redis实现分布式锁的正确姿势
  12. 多元相关性分析_数据分析的方法(三)
  13. CCAI 2017 | 中国工程院院士李德毅:L3的挑战与量产
  14. 第44章 MPU6050传感器—姿态检测—零死角玩转STM32-F429系列
  15. Android实现PDF格式文件预览
  16. DOS命令篇(find 和 findstr)
  17. 自学前端第十八天:CSS精准定位position
  18. 关于升级高德地图导航9.5.0的问题 ‘com.amap.api:navi-3dmap:9.5.0_3dmap9.5.0‘
  19. android 变windows7,安卓手机变电脑(iDisplay) v3.1.0 英文安装版 Win7/WinXP
  20. 管家婆辉煌版7.2版,超级用户密码忘记了

热门文章

  1. SCAU 2022 Java综合性实验
  2. SCAU 1037 计算数列和
  3. 论文:麦克风阵列增强
  4. 基于springboot实现注册功能发送激活码至邮箱激活账户登录
  5. 拒绝无用功,封装一个通用的PopupWindow
  6. 网络推广常见的几种方式
  7. 升级Mountain Lion系统后因为 “来自身份不明开发者” 不能打开某些软件的解决方法
  8. 抽象类和接口的区别,必须弄明白的
  9. android内存泄漏检测工具,Android内存泄漏的检测工具——LeakCanary
  10. 回首向来萧瑟处,归去,也无风雨也无晴。