主要内容

样条

三次样条数据插值

描述

例子

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

例子

=样条(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,“哦”、xx和yy)

图中包含一个轴对象。轴对象包含两个类型为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个点上评估样条的拟合。

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

图中包含一个轴对象。轴对象包含两个类型为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

用5个数据点绘制一个圆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)”或“)轴平等的

图中包含一个轴对象。轴对象包含两个类型为line的对象。

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

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

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

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

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

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

x =三3;Y = [-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,“哦”xq1, p,“- - -”xq1年代,“-”。xq1, m,“——”)传说(采样点的“pchip”“样条曲线”“makima”“位置”“东南”

图形包含一个轴对象。轴对象包含4个类型为line的对象。这些对象表示采样点、pchip、样条曲线和makima。

在这种情况下,pchipmakima有相似的行为,他们避免过冲,并能准确地连接平坦区域。

使用振荡样本函数进行第二次比较。

x=0:15;y=besselj(1,x);xq2=0:0.01:15;p=pchip(x,y,xq2);s=spline(x,y,xq2);m=makima(x,y,xq2);plot(x,y,“哦”xq2, p,“- - -”xq2年代,“-”。xq2, m,“——”)传说(采样点的“pchip”“样条曲线”“makima”

图形包含一个轴对象。轴对象包含4个类型为line的对象。这些对象表示采样点、pchip、样条曲线和makima。

当基础函数是振荡的,样条makima捕捉点之间的移动比pchip,它在局部极值附近急剧变平。

输入参数

全部折叠

x-坐标,指定为向量。向量x指定数据所在的点y是给定的。的元素x必须是唯一的。

数据类型:|

函数值在x-坐标,指定为数字向量、矩阵或数组。xy通常都是一样的长度,但是y也可以比其他元素多两个元素x指定endslopes。

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

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

  • 如果xy为相同大小的向量,则使用非结端点条件。

  • 如果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)

数据类型:|

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

数据类型:|

输出参数

全部折叠

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

的大小年代是否与尺寸有关yxq

  • 如果y是向量吗年代有相同的尺寸xq

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

    • 如果xq是标量还是向量大小(年代)返回[Ny(1:end-1)长度(xq)]

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

分段多项式,作为结构返回。在the中使用这个结构ppval函数在一个或多个查询点计算分段多项式。结构有这些字段。

描述
形式

“页”分段多项式

休息时间

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

系数

l-借-k每一行的矩阵coefs(i,:)包含一个阶的局部系数k上的多项式th间隔,[中断(i),中断(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