主要内容

花键

三次样条数据插值

描述

实例

s=样条曲线(x,Y,xq)返回一个包含插值值的向量s对应的查询点xq.的值s由三次样条插值确定xY

实例

=样条曲线(x,Y)返回一个分段多项式结构供ppval和样条线工具unmkpp

例子

全部崩溃

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

x=[012.536.578.110];y=sin(x);xx=0:25:10;yy=spline(x,y,xx);plot(x,y,“o”,xx,yy)

图中包含一个坐标轴。轴线包含2个线型对象。

当端点坡度已知时,使用夹紧或完全样条插值。为此,可以指定向量值 Y 使用两个额外图元(一个在起点,一个在终点)来定义端点坡度。

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

x=-4:4;y=[0.151.122.362.361.46.49.060];

使用插值数据花键把结果画出来。用两个额外的值指定第二个输入[0 y 0]表示端点坡度均为零。使用ppval在插值间隔中计算101个点上的样条曲线拟合。

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

图中包含一个坐标轴。轴线包含2个线型对象。

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

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

t=1900:10:1990;p=[75.99591.972105.711123.203131.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=pi*[0.5:2];y=[01 0-01 0;01 0-01];pp=spline(x,y);yy=ppval(pp,linspace(0,2*pi,101));plot(yy(1,:),yy(2,:),“- b”y (2:5), y (2, 2:5)“或者”)轴平等的

图中包含一个坐标轴。轴线包含2个线型对象。

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

为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),“:”)举行

图中包含一个坐标轴。轴包含4个线型对象。

比较产生的插值结果花键,pchip,马基马对于两个不同的数据集。这些函数都执行不同形式的分段三次Hermite插值。每个函数在计算插值坡度的方式上有所不同,当基础数据具有平坦区域或起伏时,会导致不同的行为。

比较连接平坦区域的采样数据上的插值结果。创建向量x这些点上的函数值Y、查询点xq. 使用花键,pchip,马基马.在查询点绘制内插函数值以进行比较。

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,“o”,xq1,p,'-'xq1年代,'-.',xq1,m,'--')传说(“采样点”,“pchip”,样条的,“makima”,“位置”,‘东南’)

图中包含一个坐标轴。轴包含4个线型对象。这些对象代表样本点,pchip,样条,makima。

在这种情况下,pchip马基马具有类似的行为,因为它们可以避免过冲,并且可以准确地连接平坦区域。

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

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”)

图中包含一个坐标轴。轴包含4个线型对象。这些对象代表样本点,pchip,样条,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)给出函数在每一点上的值x对于j = 1:长度(x)

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

    • y(:,:,…:,结束)给出位于以下位置的间隔末端的坡度:马克斯(x)

数据类型:|

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

数据类型:|

输出参数

全部崩溃

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

大小s是与尺寸有关的Yxq:

  • 如果Y那么,这是一个向量s有相同的尺寸xq

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

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

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

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

领域 描述
类型

“pp”对于分段多项式

休息时间

长度向量L + 1通过严格增加元素来表示每个L时间间隔

系数

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

件数,L

顺序

多项式的阶

暗淡的

维度的目标

由于多项式系数系数是每个区间的局部系数,你必须减去对应的结区间的下端点才能使用传统多项式方程中的系数。换句话说,对于系数[a、b、c、d]间歇期(x1, x2),相应的多项式为

F ( x ) = A. ( x x 1. ) 3. + B ( x x 1. ) 2. + C ( x x 1. ) + D

提示

  • 也可以使用样条插值interp1与命令一起工作xq interp1 (x, y,样条). 虽然花键对输入矩阵的行进行插值,interp1对输入矩阵的列进行插值。

算法

一个三对角线线性系统(可能有几个右边)被解决所需的信息,以描述构成插值样条的各种三次多项式的系数。花键使用函数ppval,mkpp,unmkpp。这些例程构成了一小套用于处理分段多项式的函数。有关更高级功能的访问,请参阅interp1或曲线拟合工具箱™样条函数。

参考文献

[1]德布尔,卡尔。样条的实用指南.纽约州,斯普林格:1978年。

扩展功能

之前介绍过的R2006a