主要内容

立方平滑样条函数

这个例子展示了如何使用csapsspaps命令从曲线拟合工具箱™构建三次平滑样条。

CSAPS命令

命令csaps提供了平滑样条。这是一个三次样条,或多或少地遵循在噪声数据中假定的潜在趋势。由您选择的平滑参数决定平滑样条与给定数据的紧密程度。以下是基本信息,文档的缩写版本:

三次平滑样条。

值= caps (x, y, p, xx)

的三次平滑样条在XX处的值

给定的数据(X,Y),并根据平滑参数P,选择

从区间[0 ..]1]。这个平滑样条函数f最小

P * sum_i W (i) (Y (i) - f (X (i))) ^ 2 + (1 - P) * (f D ^ 2) ^ 2积分

例子:三次多项式的噪声数据

这里有一些试运行。我们从一个简单的立方体开始,问(x): = x ^ 3,用一些噪声污染数值,并选择平滑参数的值为。5。然后绘制得到的平滑值,连同下面的立方体和污染数据。

ξ= (0:.05:1);Q = @(x) x.^3;易= q (xi);randomStream = RandStream.create (“mcg16807”“种子”、23);ybad = +。3 *(兰德(randomStream、大小(xi)));p = 5;第二十一章= (0:100)/ 100;y = csaps (xi, ybad, p,第二十一章);情节(xi,咦,“:”习,ybad“x”第二十一章,y,的r -)标题(“清洁数据,噪声数据,平滑值”)传说(“准确”“吵”“平滑”“位置”“西北”

图中包含一个轴对象。标题为Clean Data, Noisy Data, Smoothed Values的轴对象包含3个类型为line的对象。这些物体代表精确的,嘈杂的,平滑的。

这里的平滑太过了。通过选择平滑参数p当趋近于1时,我们得到一个更接近给定数据的平滑样条。我们试着P = .6, .7, .8, .9, 1,并绘制得到的平滑样条。

yy = 0(5、长度(第二十一章);p =[。6 .7 .8 .9 1];y(J,:) = caps (xi,ybad,p(J),xxi);结束持有情节(第二十一章,yy);持有标题(“对不同平滑参数值的平滑样条”)({传奇“准确”“吵”“p = 0.5”“p = 0.6”“p = 0.7”“p = 0.8”...“p = 0.9”“p = 1.0”},“位置”“西北”

图中包含一个轴对象。标题为“平滑样条参数的不同值”的轴对象包含8个类型为line的对象。这些对象代表Exact, Noisy, p = 0.5, p = 0.6, p = 0.7, p = 0.8, p = 0.9, p = 1.0。

我们看到平滑样条对平滑参数的选择非常敏感。即使对于p= 0.9,平滑样条距基本趋势仍较远,而为p= 1时,我们得到对(噪声)数据的插值。

事实上,这个公式被csapi(p.235ff样条的实用指南)对自变量的缩放非常敏感。对所使用的方程进行了简单的分析,结果表明p大约是1 /(1 +ε),ε:= h ^ 3/16,h相邻站点之间的平均差异。具体地说,您希望在以下情况下密切跟踪数据p = 1 /(1 +ε/ 100)还有一些令人满意的平滑p = 1 /(1 +ε* 100)

下图显示了的值的平滑样条p接近这个神奇的数字1 /(1 +ε).对于这种情况,它更有信息价值1 - p因为这个神奇的数字,1 /(1 +ε),非常接近于1。

ε= ((xi(结束)习近平(1)/(元素个数(xi) 1)) ^ 3/16;1 - 1 /(1 +ε)
ans = 7.8124 e-06
情节(xi,咦,“:”习,ybad“x”)举行标签=细胞(1、5);p =1 /(1+ *10^(J -3));yy (j) = csaps (xi, ybad, p,第二十一章);标签{j} = [“1 - p = ', num2str (1 - p)];结束情节(第二十一章,yy)标题(平滑样条用于平滑参数附近的“魔法”值)([{传奇“准确”“吵”},标签),“位置”“西北”)举行

图中包含一个轴对象。轴对象的标题为平滑样条为平滑参数附近的“魔法”值包含7个类型为线的对象。这些物体代表精确的,嘈杂的,1-p= 7.8125e-08, 1-p= 7.8125e-07, 1-p= 7.8124e-06, 1-p= 7.8119e-05, 1-p= 0.00078064。

在这个例子中,平滑样条对魔法数附近平滑参数的变化非常敏感。离1最远的那个似乎是最好的选择,但你可能更喜欢比它更远的那个。

p = 1 /(1 +ε* 10 ^ 3);yy = csaps (xi, ybad, p,第二十一章);持有情节(第二十一章,yy,“y”“线宽”, 2)标题(sprintf(“添加了1-p = %s的平滑样条,黄色”, num2str(1-p))

图中包含一个轴对象。添加标题为The Smoothing Spline For 1-p = 0.0077519的轴对象,黄色包含8个类型为line的对象。这些物体代表精确的,嘈杂的,1-p= 7.8125e-08, 1-p= 7.8125e-07, 1-p= 7.8124e-06, 1-p= 7.8119e-05, 1-p= 0.00078064。

你们也可以提供csaps用误差权值,对某些数据点比其他数据点更关注。此外,如果你不提供评估网站xx,然后csaps返回平滑样条的ppform。

最后,csaps还可以处理向量值数据,甚至是多元网格数据。

SPAPS命令

命令提供的三次平滑样条spaps不同于在csaps只是选择的方式。以下是文档的缩写版本spaps

SPAPS平滑样条。

[SP,VALUES] = SPAPS(X,Y,TOL)返回B-form,如果被询问,

给定的三次平滑样条f在X处的值

data (X(i),Y(:,i)), i=1,2,…, n。

平滑样条f使粗糙度最小

F(D^2 F):=∫(D^2 F(t))^2 dt on X(1) < t < X(n)

对所有函数f进行误差测量

E (f): = sum_j {W (j) * (Y (:, j) - f (X (j))) ^ 2: j = 1,……n}

并不比给定的TOL大。这里,D^M f表示第M个

f的导数,权重W的选择使得E(f)是

F(y-f)的复合梯形法则近似。

F构造为的唯一极小化器

乘以E(f) + f (D^2 f)

选取平滑参数RHO,使E(f)等于

托尔。因此,FN2FM(SP,'pp')应该(到四舍五入)相同

作为CPAPS(X,Y,RHO/(1+RHO))的输出。

公差与平滑参数

提供一个合适的容忍度可能更容易spaps比平滑参数p所要求的csaps.在前面的例子中,我们从区间中添加了均匀分布的随机噪声0.3 * -0.5 (. .0.5).因此,我们可以估计一个合理的值托尔作为测量误差的值e在这样的噪音。

托尔((=数目。3 *(兰德(randomStream、大小(yi)))) ^ 2);

这张图显示了由spaps.请注意,错误权重被指定为统一的,这是它们的默认值csaps

[sp, y,ρ]= spaps (xi, ybad、托尔(大小(xi)));情节(xi,咦,“:”习,ybad“x”习,y,的r -)标题(sprintf (清除数据,噪声数据,平滑值(1-p = %s), num2str(1/(1+rho))));传奇({“准确”“吵”“平滑”},“位置”“西北”

图中包含一个轴对象。标题为Clean Data, Noisy Data, Smoothed Values (1-p = 0.013761)的轴对象包含3个类型为line的对象。这些物体代表精确的,嘈杂的,平滑的。

图的标题显示了的值p你可以用incsaps精确地得到这些数据的平滑样条。

另外,这里提供的是平滑样条csaps当没有给定平滑参数时。在这种情况下csaps通过特定的特殊过程选择参数,该过程试图定位平滑样条对平滑参数最敏感的区域(类似于前面的讨论)。

持有情节(第二十一章,fnval (csaps (xi, ybad)第二十一章),“- - -”)标题(“清洁数据,噪声数据,平滑值”)({传奇“准确”“吵”“spaps,指定公差”...' caps,默认平滑参数'},“位置”“西北”)举行

图中包含一个轴对象。标题为Clean Data, Noisy Data, Smoothed Values的轴对象包含4个类型为line的对象。这些对象代表精确的,嘈杂的,spaps,指定的公差,caps,默认平滑参数。

CSAPS与SPAPS

csapsspaps命令的不同在于指定特定的平滑样条的方式,通过平滑参数和公差。另一个区别是spaps可以提供一个线性或五次平滑样条,除了三次平滑样条。

五次平滑样条比三次平滑样条在二阶导数移动越小的情况下效果越好。