主要内容

样条

三次样条数据插值

描述

例子

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

例子

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

例子

全部折叠

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

X = [0 1 2.5 3.6 5 7 8.1 10];Y = sinx;Xx = 0:.25:10;Yy =样条(x,y,xx);情节(x, y,“o”、xx和yy)

图中包含一个轴对象。axis对象包含2个line类型的对象。

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

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

X = -4:4;Y = [0 .15 1.12 2.36 2.36 1.46 .49 .06 0];

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

c =曲线(x,[0 y 0]);Xx = linspace(- 4,4101);情节(x, y,“o”xx, xx, ppval (cs),“- - -”);

图中包含一个轴对象。axis对象包含2个line类型的对象。

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

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

T = 1900: 10:20 90;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(:,结束)作为端点斜率。圆的起点和终点都在点(1,0),因此该点被绘制了两次。

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

图中包含一个轴对象。axis对象包含2个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),“:”)举行

图中包含一个轴对象。axis对象包含4个line类型的对象。

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

在连接平坦区域的样本数据上比较插值结果。创建矢量x值,这些点的函数值y,和查询点xq.计算查询点上的插值样条pchip,makima.在查询点处绘制插值函数值,以便进行比较。

X = -3: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”“位置”“东南”

图中包含一个轴对象。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”

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

当下面的函数是振荡的,样条而且makima更好地捕捉点之间的运动pchip它在局部极值附近被猛烈地夷为平地。

输入参数

全部折叠

x-coordinates,指定为向量。向量x指定数据所处的点y是给定的。的要素x必须是唯一的。

数据类型:|

函数值为x-coordinates,指定为数值向量、矩阵或数组。x而且y通常有相同的长度,但是yAlso可以刚好有两个元素多于x指定端点斜率。

如果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数组的大小Ny =大小(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或曲线拟合工具箱™样条函数。

参考文献

[1]德波尔,卡尔。样条实用指南.斯普林格出版社,纽约:1978年。

扩展功能

版本历史

R2006a之前介绍

另请参阅

|||