样条
三次样条数据插值
描述
例子
正弦数据的样条插值
使用样条
在间隔不均匀的采样点上插值正弦曲线。
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)
具有指定端点斜率的样条插值
当端点斜率已知时,使用夹紧样条或完整样条插值。为此,您可以指定值向量 有两个额外的元素,一个在开始,一个在结束,用来定义端点斜率。
创建一个数据向量 另一个向量 -数据的坐标。
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),“- - -”);
三次样条外推法
通过外推数据集来预测人口增长。
创建两个向量来表示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)”或“)轴平等的
正弦和余弦数据的样条插值
使用样条在更细的网格上对函数进行抽样。
为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
比较所产生的插值结果样条
,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
- - - - - -x坐标
向量
x-coordinates,指定为向量。向量x
指定数据所处的点y
是给定的。的要素x
必须是唯一的。
数据类型:单
|双
y
- - - - - -函数值为x坐标
向量|矩阵|数组
函数值为x-coordinates,指定为数值向量、矩阵或数组。x
而且y
通常有相同的长度,但是y
Also可以刚好有两个元素多于x
指定端点斜率。
如果y
是一个矩阵或数组,那么最后一个维度的值,y(::,…,j)
,作为要匹配的值x
.在这种情况下,的最后一个维度y
长度必须和x
或者正好多出两个元素。
三次样条的端点斜率遵循以下规则:
如果
x
而且y
是相同大小的向量,则使用非结端点条件。如果
x
或y
是标量,则将其展开为与另一个具有相同的长度,并使用非结结束条件。如果
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)
数据类型:单
|双
xq
- - - - - -查询点
标量|向量|矩阵|数组
查询点,指定为标量、向量、矩阵或数组。所指明的各点xq
是x插值函数值的-坐标yq
计算样条
.
数据类型:单
|双
输出参数
年代
—查询点的插值值
标量|向量|矩阵|数组
查询点上的内插值,作为标量、向量、矩阵或数组返回。
的大小年代
是与大小有关的y
而且xq
:
如果
y
是向量吗年代
尺寸和xq
.如果
y
数组的大小Ny =大小(y)
时,则适用下列条件:如果
xq
那么是标量还是向量呢大小(年代)
返回纽约(1:end-1)长度(xq)]
.如果
xq
是数组吗大小(年代)
返回纽约(1:end-1)大小(xq)]
.
页
-分段多项式
结构
分段多项式,以结构形式返回。元素使用此结构ppval
函数在一个或多个查询点处计算分段多项式。该结构具有这些字段。
场 | 描述 |
---|---|
形式 |
|
休息时间 |
长度向量 |
系数 |
|
块 |
件数, |
订单 |
多项式的阶数 |
昏暗的 |
目标的维度 |
因为多项式系数系数
为每个区间的局部系数,则必须减去对应结区间的下端点才能在常规多项式方程中使用这些系数。换句话说,对于系数(a, b, c, d)
在间隔中(x1, x2)
,对应的多项式为
提示
方法执行样条插值
interp1
使用命令函数xq interp1 (x, y,样条)
.而样条
对输入矩阵的行执行插值,interp1
对输入矩阵的列执行插值。
算法
一个三对角线性系统(可能有几个右手边)被解出所需的信息来描述构成插值样条的各种三次多项式的系数。样条
使用函数ppval
,mkpp
,unmkpp
.这些例程形成了一组用于处理分段多项式的函数。有关更高级功能的访问,请参见interp1
或曲线拟合工具箱™样条函数。
参考文献
[1]德波尔,卡尔。样条实用指南.斯普林格出版社,纽约:1978年。
扩展功能
C/ c++代码生成
使用MATLAB®Coder™生成C和c++代码。
使用注意事项和限制:
输入
x
必须严格增加。代码生成不会删除
y
条目南
值。中无限端点的代码生成不会报告错误
y
.的代码
Pp =样条(x,y)
语法,那么你不能输入页
到ppval
MATLAB函数®.创建一个MATLAB页
结构,从页
由代码生成器创建的结构:在代码生成中,使用
unmkpp
将分段多项式的细节返回给MATLAB。在MATLAB中,使用
mkpp
要创建页
结构。
如果你提供
xq
,如果y
有一个变量大小,而不是一个变量长度的矢量,那么在生成的代码中矢量输出的方向可能与MATLAB中的方向不匹配。
线程环境
使用MATLAB®在后台运行代码backgroundPool
或使用并行计算工具箱™加速代码ThreadPool
.
这个函数完全支持基于线程的环境。金宝app有关更多信息,请参见在线程环境中运行MATLAB函数.
GPU数组
通过使用并行计算工具箱™在图形处理单元(GPU)上运行来加速代码。
版本历史
Beispiel offnen
Sie haben eine geänderte版本dieses Beispiels。Möchten Sie dieses Beispiel mit Ihren Änderungen öffnen?
MATLAB-Befehl
你的身体和身体之间的联系MATLAB-Befehl
Führen Sie den Befehl durch Eingabe in das MATLAB-Befehlsfenster aus。web浏览器unterstützen keine MATLAB-Befehle。
您也可以从以下列表中选择一个网站:
如何获得最佳的网站性能
选择中国站点(中文或英文)以获得最佳站点性能。其他MathWorks国家站点没有针对您所在位置的访问进行优化。