makima
修改Akima分段立方埃尔米特插值
描述
例子
Akima余弦数据的插值
使用makima
插入一个余弦曲线在不均匀间隔的采样点。
x = 1 8.1 2.5 3.6 - 5 7 10 [0];y = cos (x);xq = 0: .25:10;yq = makima (x, y, xq);情节(x, y,“o”xq yq,“——”)
与Akima振荡函数算法局部极值附近曲线趋于平缓。为了弥补这个压扁,您可以添加更多的采样点附近的局部极值。
增加采样点附近 和 和改建插值。
x = [0 1 8.1 2.5 6.5 3.6 - 5 7 9 10];y = cos (x);xq = 0: .25:10;yq = makima (x, y, xq);情节(x, y,“o”xq yq,“——”)
数据插值样条
,pchip
,makima
产生的插值结果进行比较样条
,pchip
,makima
为两个不同的数据集。这些函数都执行不同形式的分段三次埃尔米特插值。每个函数在如何计算不同的斜坡interpolant,导致不同的行为当底层数据平地或起伏不定。
比较样本数据插值结果连接平坦的地区。创建向量x
值,在这些点函数值y
和查询点xq
。计算查询点插入使用样条
,pchip
,makima
。图查询点的插值函数值的比较。
x =三3;y = (1 1 1 0 1 1 1);xq1 = 3: .01:3;p = pchip (x, y, xq1);s =花键(x, y, xq1);m = makima (x, y, xq1);情节(x, y,“o”xq1, p,“- - -”xq1年代,“-”。xq1, m,“——”)传说(采样点的,“pchip”,样条的,“makima”,“位置”,“东南”)
在这种情况下,pchip
和makima
有类似的行为,避免过激的,能够准确地连接平坦的地区。
使用一个振荡样本函数执行第二个比较。
x = 0:15;y = besselj (1, x);xq2 = 0:0.01:15;p = pchip (x, y, xq2);s =花键(x, y, xq2);m = makima (x, y, xq2);情节(x, y,“o”xq2, p,“- - -”xq2年代,“-”。xq2, m,“——”)传说(采样点的,“pchip”,样条的,“makima”)
当底层函数振荡,样条
和makima
捕捉点比之间的运动pchip
,这是积极的局部极值附近被夷为平地。
Akima与分段多项式插值结构
为采样点创建向量x
在这些点和价值观y
。使用makima
构建一个分段多项式结构数据。
x = 5;y = [1 1 1 0 0 1 1 2 2 2 2];页= makima (x, y)
页=结构体字段:形式:“pp”优惠:[5 4 3 2 1 0 1 2 3 4 5]系数:[10 x4双]部分:10:4昏暗的:1
订单的结构包含10多项式的信息4跨数据。pp.coefs(我,:)
包含有效的多项式的系数定义的区域断点((我)(i + 1)休息)
。
使用结构ppval
评价插值在几个查询点,然后画出结果。三个或三个以上常数分地区,Akima算法与一条直线连接的点。
xq = 5:0.2:5;m = ppval (pp、xq);情节(x, y,“o”xq, m,“-”。)ylim ([-0.2 - 2.2])
输入参数
x
- - - - - -采样点
向量
采样点,指定为一个向量。向量x
指定的点数据y
是给定的。的元素x
必须是唯一的。
数据类型:单
|双
y
- - - - - -采样点的函数值
向量|矩阵|数组
在采样点函数值,指定为一个数值向量,矩阵,或数组。x
和y
必须具有相同的长度。
如果y
是一个矩阵或数组,那么在过去的维度的值,y (::,…, j)
作为匹配的值x
。在这种情况下,最后一个尺寸y
必须是相同的长度吗x
。
数据类型:单
|双
xq
- - - - - -查询点
标量|向量|矩阵|数组
查询点,指定为一个标量,矢量、矩阵,或数组。中指定的点xq
是x坐标插值函数值yq
计算makima
。
数据类型:单
|双
输出参数
yq
——查询点插值
标量| | |向量矩阵数组
插值在查询点,作为一个标量,返回向量,矩阵,或数组。的大小yq
的大小有关吗y
和xq
:
如果
y
是一个矢量,然后呢yq
一样的尺寸吗xq
。如果
y
是一个数组的尺寸吗纽约=大小(y)
,那么这些条件应用:如果
xq
是一个标量或矢量,然后呢大小(yq)
返回纽约(1:end-1)长度(xq)]
。如果
xq
是一个数组,然后呢大小(yq)
返回纽约(1:end-1)大小(xq)]
。
页
——分段多项式
结构
分段多项式,作为一个结构返回。使用这种结构ppval
函数来评估在一个或多个查询点插值多项式。这些字段的结构。
场 | 描述 |
---|---|
形式 |
|
休息时间 |
向量的长度 |
系数 |
|
块 |
数量的碎片, |
订单 |
多项式的阶 |
昏暗的 |
维度的目标 |
由于多项式系数系数
是当地的系数为每个区间,必须减去相应的结间隔下端点使用传统的多项式方程的系数。换句话说,系数(a, b, c, d)
的时间间隔(x1, x2)
,相应的多项式
更多关于
修改Akima插值
的Akima算法一维插值中描述[1]和[2]与连续生产,执行三次插值多项式分段一阶衍生品(C1)。该算法避免了过度的局部波动。
如果 斜率是间隔吗 ,然后导数的值 在样本点 是附近的山坡上的加权平均:
Akima原始公式的权重:
原Akima算法给双方点,同等重量均匀划分一个波动。
当两个平面区域不同的斜坡上相遇时,修改了原Akima算法给出了更重的一边斜率接近零。这一修改为主到接近水平的一面,更直观,避免过度。特别是,当有三个或更多的连续共线点,该算法将它们与一条直线,从而避免过度。
修改Akima算法中使用的重量是:
相比样条
算法,Akima算法产生更少的起伏和更适合应对快速变化平坦地区之间。相比pchip
算法,Akima算法没有积极地夷为平地,因此仍然能够处理振动数据。
引用
[1]Akima,藤原浩。“一个新的插值和平滑的曲线拟合的方法基于本地程序。”杂志的ACM (JACM),17.4,1970年,页589 - 602。
[2]Akima,藤原浩。“二元插值的方法和基于局部表面光滑拟合程序。”ACM的通信17.1,1974年,页18 - 20。
扩展功能
C / c++代码生成
生成C和c++代码使用MATLAB®编码器™。
使用笔记和限制:
输入
x
必须严格增加。代码生成不移除
y
条目南
值。如果生成的代码
页= makima (x, y)
语法,然后你不能输入页
到ppval
在MATLAB函数®。创建一个MATLAB页
结构从页
代码生成器创建的结构:在代码生成,使用
unmkpp
返回MATLAB的分段多项式的细节。在MATLAB中,使用
mkpp
创建页
结构。
如果你提供
xq
,如果y
有一个适应和不是一个变长向量,向量的方向输出生成的代码可能不匹配MATLAB的取向。
线程环境
在后台运行代码使用MATLAB®backgroundPool
与并行计算工具箱™或加速代码ThreadPool
。
这个函数完全支持线程的环境。金宝app有关更多信息,请参见MATLAB函数线程环境中运行。
GPU数组
加速代码运行在一个图形处理单元(GPU)使用并行计算工具箱™。
这个函数完全支持GPU数组。金宝app有关更多信息,请参见运行在GPU MATLAB函数(并行计算工具箱)。
分布式阵列
分区大数组在内存使用并行计算集群的工具箱相结合™。
版本历史
介绍了R2019b
Apri esempio
如果dispone di una versione modificata di questo esempio。Desideri aprire questo esempio con le modifiche星期二吗?
第一MATLAB
海脂肪clic苏联合国collegamento切corrisponde questo第一MATLAB:
Esegui il第一inserendolo所以nella隙缝di第一MATLAB。我浏览器web非supportano金宝app comandi MATLAB。
你也可以从下面的列表中选择一个网站:
表现最好的网站怎么走吗
选择中国网站(中文或英文)最佳站点的性能。其他MathWorks国家网站不优化的访问你的位置。