主要内容

makima

修正Akima分段三次Hermite插值

描述

例子

yq= makima (xyxq执行修改Akima插值使用的值y在采样点x找到插值值yq在查询点处xq

例子

= makima (xy返回用于的分段多项式结构ppval还有样条函数unmkpp

例子

全部折叠

使用makima在不均匀间隔的样本点上插值余弦曲线。

X = [0 1 2.5 3.6 5 7 8.1 10];y = cos (x);xq = 0: .25:10;yq = makima (x, y, xq);情节(x, y,“o”xq yq,“——”

图中包含一个axes对象。坐标轴对象包含两个line类型的对象。

利用振荡函数,Akima算法使曲线在局部极值附近变平。为了补偿这种扁平化,可以在局部极值附近添加更多的样本点。

在附近添加样本点 x 6 5 而且 x 9 重新绘制插值图。

X = [0 1 2.5 3.6 5 6.5 7 8.1 9 10];y = cos (x);xq = 0: .25:10;yq = makima (x, y, xq);情节(x, y,“o”xq yq,“——”

图中包含一个axes对象。坐标轴对象包含两个line类型的对象。

的插值结果进行比较样条pchip,makima两个不同的数据集。这些函数都执行不同形式的分段三次埃尔米特插值。每个函数计算插值函数斜率的方式不同,这导致当底层数据有平坦区域或波动时,会有不同的行为。

在连接平坦区域的样本数据上比较插补结果。创建向量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”“位置”“东南”

图中包含一个axes对象。axis对象包含4个line类型的对象。这些对象表示样本点、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”

图中包含一个axes对象。axis对象包含4个line类型的对象。这些对象表示样本点、pchip、样条、makima。

当函数是振荡的,样条而且makima捕捉点之间的移动比pchip它在局部极值附近被猛烈地压平。

为样本点创建向量x以及这些点的值y.使用makima为数据构造一个分段多项式结构。

x = 5;Y = [1 1 1 0 0 1 1 2 2 2];页= makima (x, y)
页=结构体字段:形式:'pp'断:[-5 -4 -3 -2 -1 0 1 2 3 4 5]coefs: [10x4双]piece: 10 order: 4 dim: 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])

图中包含一个axes对象。坐标轴对象包含两个line类型的对象。

输入参数

全部折叠

样本点,指定为一个向量。向量x指定数据所处的点y是给定的。的元素x必须是唯一的。

数据类型:|

样本点上的函数值,指定为数值向量、矩阵或数组。x而且y长度必须相同。

如果y是一个矩阵或数组,那么最后一个维度的值,y(::,…,j),作为要匹配的值x.在这种情况下,最后一个维度y长度一定和x

数据类型:|

查询点,指定为标量、向量、矩阵或数组。在xqx插值函数值的坐标yq计算makima

数据类型:|

输出参数

全部折叠

查询点上的插值值,作为标量、向量、矩阵或数组返回。的大小yq的大小有关吗y而且xq

  • 如果y是向量吗yq尺寸和xq

  • 如果y数组的大小纽约=大小(y),则适用以下条件:

    • 如果xq那么是标量还是向量呢大小(yq)返回纽约(1:end-1)长度(xq)]

    • 如果xq是数组吗大小(yq)返回纽约(1:end-1)大小(xq)]

分段多项式,作为结构返回。将此结构与ppval函数在一个或多个查询点上计算插值多项式。这个结构有这些字段。

描述
形式

“页”分段多项式

休息时间

向量的长度L + 1的开始和结束的严格递增元素l时间间隔

系数

l——- - - - - -k每一行的矩阵系数(我,:)含一定阶局部系数的k多项式的th间隔,[休息(我),优惠(i + 1)

数量的碎片,l

订单

多项式的阶

昏暗的

维度的目标

因为多项式系数系数如果是每个区间的局部系数,则必须减去对应的结区间的端点才能使用传统多项式方程中的系数。换句话说,对于系数(a, b, c, d)的时间间隔(x1, x2),对应的多项式为

f x 一个 x x 1 3. + b x x 1 2 + c x x 1 + d

更多关于

全部折叠

修改Akima插值

Akima算法对于一维插值,描述在[1]而且[2],进行三次插值,生成具有连续一阶导数的分段多项式(C1)。该算法避免了过多的局部波动。

如果 δ v + 1 v x + 1 x 在区间上的斜率是多少 x x + 1 即导数的值 d 在采样点 x 为附近斜坡的加权平均值:

d w 1 w 1 + w 2 δ 1 + w 2 w 1 + w 2 δ

在Akima的原始公式中,权重为:

w 1 | δ + 1 δ | w 2 | δ 1 δ 2 |

原始的Akima算法赋予两边的点同等的权重,均匀地划分一个波动。

当两个坡度不同的平坦区域相遇时,对原Akima算法的修改使坡度接近于零的一侧获得更多的权重。这种修改优先考虑更接近水平的一侧,更直观,避免超调。特别是,当有三个或更多连续共线点时,算法用一条直线连接它们,从而避免了超调。

改进后的Akima算法中使用的权重为:

w 1 | δ + 1 δ | + | δ + 1 + δ | 2 w 2 | δ 1 δ 2 | + | δ 1 + δ 2 | 2

相比样条算法中,Akima算法产生的波动较少,更适合处理平面区域之间的快速变化。相比pchip算法,Akima算法没有侵略性的平坦化,因此仍然能够处理振荡数据。

参考文献

[1] Akima,藤原浩。“一种基于局部过程的插值和平滑曲线拟合新方法。”美国计算机学会学报(JACM), 1970, pp. 589-602。

[2] Akima,藤原浩。一种基于局部过程的二元插值和光滑曲面拟合方法。ACM通信, 17.1, 1974,第18-20页。

扩展功能

版本历史

介绍了R2019b

Baidu
map