三次B样条插值和误差分析
关键字:基函数,控制点,节点
参考: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样条插值和误差分析相关推荐
- 三次样条python_三次hermit样条插值python
{{em}在这里举例说明了{em}在一些给定的维数之间的导数的用法.在import numpy as np from scipy import interpolate def sampleCubicS ...
- 非均匀三次B样条曲线插值实现及MATLAB代码
这篇博客跟我上一篇博客<均匀三次B样条曲线插值实现及MATLAB代码>的内容有点像,只是在基函数的计算上不同,造成均匀/非均匀的区别. 参考资料: [1](这个PPT讲得很通俗,但对于多插 ...
- 三次B样条曲线拟合算法
1 三次B样条曲线方程 B样条曲线分为近似拟合和插值拟合,所谓近似拟合就是不过特征点,而插值拟合就是通过特征点,但是插值拟合需要经过反算得到控制点再拟合出过特征点的B样条曲线方程.这里会一次介绍两种拟 ...
- B-spline三次B样条曲线方程
一.B-样条基函数 它有两条贝塞尔基函数所没有的特性, (1)定义域被节点细分(subdivided): (2) 基函数不是在整个区间非零.实际上,每个B样条基函数在附近一个子区间非零, 因此,B-样 ...
- python数据增强三种方法
程序1: # -*- coding:utf-8 -*- """数据增强1. 色彩抖动 color jittering2. 噪声扰动 noise3. 旋转变换/反射变换 R ...
- 均匀三次B样条曲线插值实现及MATLAB代码
参考资料: [1](这个PPT讲得很通俗,但对于多插值点分段曲线的内容漏讲了一个知识点)三次周期B样条曲线的算法 - 百度文库 (baidu.com) [2](这个介绍只有两个插值点的三次B样条曲线, ...
- 【Matlab】三次B样条基函数插值求解泛函极值问题
--------------------------------------------------------------------------------------------- 前言:博主是 ...
- 基于MATLAB的B样条插值拟合算法与分段多项式(附完整代码)
一. B样条函数 B样条函数的MATLAB代码如下: S=spapi(k,x,y) %k为用户选定的B样条阶次,一般以4和5居多 例题1 分别用B样条函数对y和f(x)中的自选数据进行5次B样条函数拟 ...
- 基于matlab的数值分析实例研究,基于MATLAB的数值分析答辩.ppt
单片机论文,优秀毕业论文,外文翻译,毕业论文设计,毕业过关论文,毕业设计,毕业设计说明,毕业论文,单片机毕业论文,基于单片机毕业论文,毕业论文终稿,毕业论文初稿,毕业论文设计,单片机论文,本文档支持完 ...
最新文章
- 队列——PowerShell版
- 最新开源无监督单目深度估计方法,解决复杂室内场景难训练问题,效果性能远超SOTA...
- 记录rewrite url我之前不知道的地方
- zbb20170613 linux 安装 mysql
- 程序中下载采购申请的附件
- 转载 一篇UI规范文件
- html如何添加文档,如何在HTML中添加行
- 敏捷开发FAQ[转]
- 当多个类之间有继承关系时,创建子类对象会导致父类初始化块的执行。
- 单总线led驱动芯片WS2811在linux下的驱动
- Redis入门总结(三):redis实现分布式锁的正确姿势
- 多元相关性分析_数据分析的方法(三)
- CCAI 2017 | 中国工程院院士李德毅:L3的挑战与量产
- 第44章 	MPU6050传感器—姿态检测—零死角玩转STM32-F429系列
- Android实现PDF格式文件预览
- DOS命令篇(find 和 findstr)
- 自学前端第十八天:CSS精准定位position
- 关于升级高德地图导航9.5.0的问题 ‘com.amap.api:navi-3dmap:9.5.0_3dmap9.5.0‘
- android 变windows7,安卓手机变电脑(iDisplay) v3.1.0 英文安装版 Win7/WinXP
- 管家婆辉煌版7.2版,超级用户密码忘记了