主要内容

样条

三次样条数据插值

描述

例子

年代=样条(xyxq返回插值值的向量年代中对应的查询点xq.的值年代是由三次样条插值确定的x而且y

例子

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

例子

全部折叠

使用样条在间隔不均匀的采样点上插值正弦曲线。

X = [0 1 2.5 3.6 5 7 8.1 10];y = sin (x);xx = 0: .25:10;yy =花键(x, y, xx);情节(x, y,“o”、xx和yy)

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

当端点斜率已知时,使用夹紧或完全样条插值。为此,您可以指定值向量 y 用两个额外的元素,一个在开始,一个在结束,来定义端点斜率。

创建一个数据向量 y 另一个向量 x -坐标的数据。

x = 4:4,Y = [0.15 1.12 2.36 2.36 1.46 .49 .06 0];

插值数据样条然后画出结果。用两个额外的值指定第二个输入y [0 0]表示端点斜率都为零。使用ppval计算插值区间中超过101点的样条拟合。

Cs =样条(x,[0 y 0]);xx = linspace (4101);情节(x, y,“o”xx, xx, ppval (cs),“- - -”);

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

通过外推数据集来预测人口增长。

创建两个向量表示1900 - 1990年的人口普查年份(t)和相应的美国人口以百万计(p).

t = 1900:10:1990;P = [75.995 91.972 105.711 123.203 131.669 ....150.697 179.323 203.212 226.505 249.633];

用三次样条对2000年的人口进行外推和预测。

样条(t, p, 2000)
ans = 270.6060

用五个数据点生成一个圆的图y(:, 2),…,y (:, 6)标有o的。矩阵y包含的列比包含的多两列x.因此,样条使用y (: 1)而且y(:,结束)endslopes。圆在点(1,0)开始和结束,所以这个点被画了两次。

x =π* (0:.5:2);Y = [0 1 0 -1 0 1 0;1 0 1 0 -1 0 1];页=花键(x, y);Yy = ppval(pp, linspace(0,2*pi,101));情节(yy (1:), yy (2:)“- b”y (2:5), y (2, 2:5)”或“)轴平等的

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

使用样条在更细的网格上采样函数。

为0到1之间的一些值生成正弦和余弦曲线。使用样条插值在更细的网格上采样函数。

x = 0: .25:1;Y = (sin (x);cos (x)];xx = 0: .1:1;YY =花键(x, Y, xx);情节(x, Y (1:)“o”, xx和YY (1:)“- - -”)举行:情节(x, Y (2),“o”:, xx和YY (2),“:”)举行

图中包含一个axes对象。axis对象包含4个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-coordinates,指定为一个向量。向量x指定数据所处的点y是给定的。的元素x必须是唯一的。

数据类型:|

函数值在x-coordinates,指定为数值向量、矩阵或数组。x而且y通常长度相同,但是yAlso可以比。多两个元素x指定endslopes。

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

三次样条的端点斜率遵循以下规则:

  • 如果x而且y是相同大小的向量,则使用非结结束条件。

  • 如果xy是一个标量,那么它将展开为与另一个具有相同的长度,并使用非结结束条件。

  • 如果y是否一个包含两个以上值的向量x条目,那么样条中的第一个和最后一个值y作为三次样条的端点斜率。例如,如果y是一个向量,则:

    • y (2: end-1)给出每一点的函数值x

    • y (1)给出区间开始处的斜率分钟(x)

    • y(结束)给出区间端点处的斜率马克斯(x)

  • 类似地,如果y是矩阵还是N维数组大小(y, N)等于长度(x) + 2,那么:

    • y(::,…,j + 1)给出每一点的函数值xj = 1:长度(x)

    • y (:,:,...:, 1)给出位于的区间开始处的斜率分钟(x)

    • y (:,:,...:, 结束)给出了位于的区间末端的斜率马克斯(x)

数据类型:|

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

数据类型:|

输出参数

全部折叠

查询点上的插值值,作为标量、向量、矩阵或数组返回。

的大小年代的大小有关吗y而且xq

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

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

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

    • 如果xq是数组吗大小(年代)返回纽约(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

提示

  • 方法也可以执行样条插值interp1使用命令执行xq interp1 (x, y,样条).而样条对输入矩阵的行进行插值,interp1对输入矩阵的列执行插值。

算法

一个三对角线性系统(可能有几个右手边)被求解为描述组成插值样条的各种三次多项式的系数所需的信息。样条使用的功能ppvalmkpp,unmkpp.这些例程形成了一组用于处理分段多项式的函数。要访问更高级的功能,请参见interp1或曲线拟合工具箱™样条函数。

参考文献

德布尔,卡尔。样条曲线的实用指南.斯普林格-弗拉格,纽约:1978年。

扩展功能

版本历史

之前介绍过的R2006a

另请参阅

|||

Baidu
map