主要内容

CSAPS.

立方平滑花键

描述

注意

对于更简单但更灵活的方法来生成平滑样条曲线,请尝试曲线拟合应用程序或者适合功能。

PP.= CSAPS(Xy返回给定数据的立方平滑样条插值(x,y)ppform。样条的值F在数据网站x(j)近似数据值Y(:,j)对于J = 1:长度(x)

平滑花键F最小化

P. σ. j = 1 N W. j | y j - F X j | 2 } 错误测量 + 1 - P. λ. T. | D. 2 F T. | 2 D. T. } 粗糙度测量

这里,N是条目的数量X并且整数是超过包含所有条目的最小间隔XyjXj参考j参赛作品yX, 分别。D.2F表示该功能的第二个导数F

默认值误差测量权重W.j是1.分段常量函数的默认值λ.在里面粗糙度测量是常量功能1.默认情况下,CSAPS.选择一个值平滑参数P.基于给定的数据网站X

为了评估其基本间隔之外的平滑样条曲线,您必须首先推断它。使用命令pp = fnxtr(pp)为了确保第二衍生物在数据站点跨越的间隔之外为零。

PP.= CSAPS(XyP.指定平滑参数P.。您还可以提供粗糙度测量权重λ.通过提供P.作为第一个条目的矢量P.一世进入是值的λ.在间隔上(x(i-1),x(i))

PP.= CSAPS(XyP.,[],W.还指定权重W.在错误测量中。

价值= CSAPS(XyP.XX.使用平滑参数P.并返回在点处评估的平滑样条的值XX.。此语法与fnval(CSAPS(x,y,p),xx)

价值= CSAPS(XyP.XX.W.使用平滑参数P.并且错误测量权重W.,并返回在点处评估的平滑样条的值XX.。此语法与fnval(csaps(x,y,p,[],w),xx)

[___] = csaps({x1,...,xm},y___提供ppformm- 将张量 - 产品平滑样条花样条花样条带到矩形网格上的数据{x1,...,xm}。您可以使用以前语法中的任何参数使用此语法。

[___P.] = CSAPS(___还返回最终样条结果中使用的平滑参数的值,无论您指定P.。此语法对于您可以从中开始的实验非常有用[pp,p] = csaps(x,y)并获得合理的首先猜测P.

例子

全部收缩

使用拟合平滑花键CSAPS.函数具有不同值的平滑参数P.。使用值P.在0和1的极端之间看到它们如何影响所拟合的样条的形状和近距离。

加载钛数据集。

[x,y] =钛();

什么时候p = 0.S0.是最小二乘直线适合数据。什么时候p = 1S1是变分,或自然的立方样条嵌段。

对于0

SP.是一个平滑的样条曲线,是两个极端之间的权衡:比立体体更顺畅S1更靠近数据而不是直线S0.

p = 0.00009;s0 = csaps(x,y,0);sp = csaps(x,y,p);s1 = csaps(x,y,1);
图Fnplt(S0);保持fnplt(sp);fnplt(s1);绘图(x,y,'ko');保持关闭标题('平滑样条比p');传说('p = 0',['p ='num2str(p)],'p = 1''位置''西北'

调整平滑参数,错误测量权重以及粗糙度测量权重。

使用噪音创建正弦曲线。

x = leinspace(0,2 * pi,21);Y = SIN(x)+(兰特(1,21) - 。5)*。3;

适合数据的平滑样条。指定平滑参数p = 0.4和错误测量权重W.在数据上各不相同。

pp = csaps(x,y,0.4,[],[(1,10),Repmat(5,1,10),0]);

该函数返回平滑拟合到嘈杂的数据,这是右半部分更近的数据,因为在那里有更大的误差测量重量。请注意,上次数据点的零误差加权排除了从拟合中的这一点。

现在使用相同的数据,平滑参数和错误测量权重适用平滑样条曲线,但调整后的粗糙度测量权重。

pp1 = csaps(x,y,[.4,1,10),repmat(.2,1,10)],[],......[(1,10),Repmat(5,1,10),0]);

粗糙度测量重量仅为右半部分的0.2。相应地,契合是艰难的,但在数据的右侧更近(除了忽略的最后一个数据点除外)。

绘制两个适合进行比较。

图持有fnplt(pp,'B');fnplt(pp1,'r--')绘图(x,y,'好'抱紧关闭ylim([ -  1.5 1.5])标题(['立方体平滑花键,右半分配'......'不同'])传奇('较大的错误重量''较大的误差和较小的粗糙度重量'

适合平滑的样条曲线,以生成由此生成的数据功能添加均匀噪音。采用CSAPS.获取新的,平滑的数据点和平滑参数CSAPS.确定适合。

创建网格。对于此示例,网格是51×61均匀网格。

X = {Linspace(-2,3,51),Linspace(-3,3,61)};[xx,yy] = ndgrid(x {1},x {2});

使用该数据生成嘈杂的数据间隔中的功能和随机数 [ - 1 2 1 2 ]

y =峰(xx,yy);Noisy = Y +(Rand(尺寸(y)) -  0.5);图冲浪(XX,YY,嘈杂)轴关闭

适合数据。采用CSAPS.获取在网格上评估的平滑数据值X和拟合中使用的默认平滑参数。

[sval,p] = csaps(x,noisy,[],x);

适合的曲线表明一些粗糙度仍然存在。请注意,您必须转换数组Sval.

图SURF(x {1},x {2},sval。')轴关闭

对于稍微更平滑的近似,请指定值P.这略小于CSAPS.默认值。

ssval = csaps(x,noisy,.996,x);图SURF(x {1},x {2},ssval。')轴关闭

输入参数

全部收缩

数据值的数据站点y要适合,指定为矢量或作为多变量数据的单元阵列。花键F在每个数据网站上创建结X这样Fx(j))=Y(:,j)对于所有值j

对于多变量,网格数据,可以指定X作为一个单元格数组,它指定每个变维​​中的数据站点:Fx1(i),x2(j),... xn(k))=Y(:,我,j,...,k)

数据类型:|

在创建样条曲线期间适合的数据值,指定为向量,矩阵或数组。数据值Y(:,j)可以是标量,矩阵或N- 统计数阵列。在同一数据站点提供的数据值X平均。

数据类型:|

平滑参数,指定为0到1之间的标量值或作为多变量数据的值的单元数组。您还可以指定粗糙度测量权重的值λ.通过提供P.作为向量。为了为多变量数据提供粗糙度测量权重,请使用单元的传感器阵列。如果提供空数组,则该函数选择默认值P.基于数据网站X和默认值1对于粗糙度测量重量λ.

平滑参数决定了相对权重,放置在矛盾的需求上F光滑或有F靠近数据。对于P.= 0,F是个最小二乘拟合数据。对于P.= 1,F是个变形,或者自然,立方样条嵌晶。如P.从0移动到1,平滑样条曲从一个极端变为另一个。

有利的范围P.通常接近1 /(1 +H3./ 6),在哪里H是数据站点的平均间距。该函数选择默认值P.在这个范围内。对于统一间隔数据,您可以期待密切合适P.= 1(1 +H3./ 60)和一些令人满意的平滑P.= 1 /(1 +H3./ 0.6)。你可以输入P> 1,但是这种选择导致平滑的样条甚至比变分立方样条插值更粗糙。

如果输入P.是负或空的,那么该函数使用默认值P.

您可以指定粗糙度测量权重λ.通过提供的平滑参数旁边P.作为向量。该载体必须与X,与之一世进入价值λ.在间隔上(x(i-1)... x(i)),for..i = 2:长度(x)。输入向量的第一个条目P.是平滑度参数的所需值P.。通过提供粗糙度测量权重,您可以使由此产生的平滑样条亮相(具有较大的重量值)或更靠近间隔的不同部分中的数据(具有较小权重值)。粗糙度测量重量必须是非负的。

如果你选择困难P.但有一些感觉达到噪音的大小y,考虑使用spaps(x,y,tol)代替。此功能选择P.使得粗糙度测量尽可能小,但受错误测量不超过的条件。在这种情况下,错误测量通常等于指定的值

数据类型:|

误差测量权重W.在错误测量中,指定为与相同尺寸的非负条目的向量X

权重向量的默认值W.在里面错误测量是(大小(x))

评估标度的评估点,指定为向量或作为传感器的传感器,用于多变量数据的矢量阵列。使用样条评估进行使用fnval.

数据类型:|

输出参数

全部收缩

ppform的样条曲线,用这些字段作为结构返回。

样条的形式,返回PP.PP.表示样条曲线以分段多项式形式给出。

样条的结位置,作为向量或作为多变量数据的传感器返回或作为电池阵列。vectors包含严格增加的元素,其表示定义多项式块的间隔的每个间隔的开始和结束。

每个部分的多项式系数,作为矩阵返回或作为多变量数据的阵列。

描述样条曲线的多项式部分的数量,作为标量返回或作为多变量数据的每个变量中的片段的数量矢量。

多项式函数的顺序描述每个多项式曲线的多项式函数,作为标量返回,或者作为包含多变量数据的每个变量中的订单的矢量。

目标函数的维度,作为标量返回。

评估的样条曲线,作为矢量返回为矢量,用于多变量数据的矩阵或阵列。在给定的评估点评估样条曲线XX.

用于计算样条曲线的平滑参数,作为标量返回标量或作为多变量数据的标量值阵列。P.在。。。之间0.1

算法

CSAPS.是Fortran常规的实现光滑PGS.

平滑样条的计算需要求解其系数矩阵具有形式的线性系统p * a +(1-p)* b,与矩阵一种B.取决于数据站点X。默认值P.p *痕迹(a)等于(1-P)*痕迹(b)

也可以看看

||

在R2006A之前介绍