文档帮助中心文档
样条
pchip
makima
三次样条数据插值
S =样条(x,y,xq)
Pp =样条(x,y)
例子
年代=样条(x,y,xq)返回插值值的向量年代中对应的查询点xq.的价值年代都是由三次样条插值确定的x而且y.
年代=样条(x,y,xq)
年代
x
y
xq
页=样条(x,y)返回用于的分段多项式结构ppval还有样条效用unmkpp.
页=样条(x,y)
页
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)
当端点斜率已知时,使用夹紧样条或完整样条插值。为此,您可以指定值向量 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个点的样条拟合值。
[0 y 0]
c =曲线(x,[0 y 0]);Xx = linspace(- 4,4101);情节(x, y,“o”xx, xx, ppval (cs),“- - -”);
通过外推数据集来预测人口增长。
创建两个向量来表示1900年至1990年的人口普查年份(t)和相应的美国人口(以百万计)(p).
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),因此该点被绘制了两次。
y(:, 2),…,y (:, 6)
y (: 1)
y(:,结束)
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)”或“)轴平等的
使用样条在更细的网格上对函数进行抽样。
为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),“:”)举行从
比较所产生的插值结果样条,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”,“位置”,“东南”)
在这种情况下,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”)
当下面的函数是振荡的,样条而且makima更好地捕捉点之间的运动pchip它在局部极值附近被猛烈地夷为平地。
x-coordinates,指定为向量。向量x指定数据所处的点y是给定的。的要素x必须是唯一的。
数据类型:单|双
单
双
函数值为x-coordinates,指定为数值向量、矩阵或数组。x而且y通常有相同的长度,但是yAlso可以刚好有两个元素多于x指定端点斜率。
如果y是一个矩阵或数组,那么最后一个维度的值,y(::,…,j),作为要匹配的值x.在这种情况下,的最后一个维度y长度必须和x或者正好多出两个元素。
y(::,…,j)
三次样条的端点斜率遵循以下规则:
如果x而且y是相同大小的向量,则使用非结端点条件。
如果x或y是标量,则将其展开为与另一个具有相同的长度,并使用非结结束条件。
如果y向量是否包含两个大于的值x有条目,那么样条中的第一个和最后一个值y作为三次样条的端点斜率。例如,如果y是一个向量,则:
y (2: end-1)给出了中每一点的函数值x
y (2: end-1)
y (1)给出位于区间开始处的斜率分钟(x)
y (1)
分钟(x)
y(结束)给出位于区间末端的斜率马克斯(x)
y(结束)
马克斯(x)
类似地,如果y矩阵还是N-维数组大小(y, N)等于长度(x) + 2,那么:
N
大小(y, N)
长度(x) + 2
y(::,…,j + 1)给出了中每一点的函数值x为J = 1:长度(x)
y(::,…,j + 1)
J = 1:长度(x)
y (:,:,...:, 1)给出位于区间开始处的斜率分钟(x)
y (:,:,...:, 1)
y (:,:,...:, 结束)给出位于区间末端的斜率马克斯(x)
y (:,:,...:, 结束)
查询点,指定为标量、向量、矩阵或数组。所指明的各点xq是x插值函数值的-坐标yq计算样条.
yq
查询点上的内插值,作为标量、向量、矩阵或数组返回。
的大小年代是与大小有关的y而且xq:
如果y是向量吗年代尺寸和xq.
如果y数组的大小Ny =大小(y)时,则适用下列条件:
Ny =大小(y)
如果xq那么是标量还是向量呢大小(年代)返回纽约(1:end-1)长度(xq)].
大小(年代)
纽约(1:end-1)长度(xq)]
如果xq是数组吗大小(年代)返回纽约(1:end-1)大小(xq)].
纽约(1:end-1)大小(xq)]
分段多项式,以结构形式返回。元素使用此结构ppval函数在一个或多个查询点处计算分段多项式。该结构具有这些字段。
形式
“页”为分段多项式
“页”
休息时间
长度向量L + 1的开始和结束的严格递增元素l时间间隔
L + 1
l
系数
l——- - - - - -k每一行的矩阵系数(我,:)包含某一阶局部系数的k的多项式我th间隔,[休息(我),优惠(i + 1)
k
系数(我,:)
我
[休息(我),优惠(i + 1)
块
件数,l
订单
多项式的阶数
昏暗的
目标的维度
因为多项式系数系数为每个区间的局部系数,则必须减去对应结区间的下端点才能在常规多项式方程中使用这些系数。换句话说,对于系数(a, b, c, d)在间隔中(x1, x2),对应的多项式为
(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对输入矩阵的列执行插值。
interp1
xq interp1 (x, y,样条)
一个三对角线性系统(可能有几个右手边)被解出所需的信息来描述构成插值样条的各种三次多项式的系数。样条使用函数ppval,mkpp,unmkpp.这些例程形成了一组用于处理分段多项式的函数。有关更高级功能的访问,请参见interp1或曲线拟合工具箱™样条函数。
mkpp
[1]德波尔,卡尔。样条实用指南.斯普林格出版社,纽约:1978年。
使用注意事项和限制:
输入x必须严格增加。
代码生成不会删除y条目南值。
南
中无限端点的代码生成不会报告错误y.
的代码Pp =样条(x,y)语法,那么你不能输入页到ppvalMATLAB函数®.创建一个MATLAB页结构,从页由代码生成器创建的结构:
在代码生成中,使用unmkpp将分段多项式的细节返回给MATLAB。
在MATLAB中,使用mkpp要创建页结构。
如果你提供xq,如果y有一个变量大小,而不是一个变量长度的矢量,那么在生成的代码中矢量输出的方向可能与MATLAB中的方向不匹配。
backgroundPool
ThreadPool
这个函数完全支持基于线程的环境。金宝app有关更多信息,请参见在线程环境中运行MATLAB函数.
输入参数y必须是非稀疏的。
有关更多信息,请参见在图形处理器上运行MATLAB函数(并行计算工具箱).
interp1|pchip|makima|ppval
您有这个示例的修改版本。要使用编辑打开此示例吗?
你点击了一个对应于这个MATLAB命令的链接:
在MATLAB命令窗口中输入该命令来运行该命令。Web浏览器不支持MATLAB命令。金宝app
选择一个网站,在可用的地方获得翻译的内容,并查看当地的活动和优惠。根据您所在的位置,我们建议您选择:.
您也可以从以下列表中选择一个网站:
选择中国站点(中文或英文)以获得最佳站点性能。其他MathWorks国家站点没有针对您所在位置的访问进行优化。
联系当地办事处