方法csaps
和spaps
命令从曲线拟合工具箱™构建三次平滑样条。
命令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 -)标题(“干净的数据,嘈杂的数据,平滑的值”)传说(“准确”,“吵”,“平滑”,“位置”,“西北”)
这里的平滑太过了。通过选择平滑参数p
当接近1时,我们得到一条更接近给定数据的平滑样条。我们试着P =。6,。7,。8,。9,1
,并绘制得到的平滑样条曲线。
yy = 0(5、长度(第二十一章);p =[。6.7 .8 . 91 1];为J =1:5 yy(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”},“位置”,“西北”)
我们可以看到,平滑样条对平滑参数的选择非常敏感。即使对于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)标题(“用于平滑参数的光滑样条”)([{传奇“准确”,“吵”},标签),“位置”,“西北”)举行从
在这个例子中,平滑样条对魔术数附近平滑参数的变化非常敏感。离1最远的那个似乎是这些中最好的选择,但你可能更喜欢那个之外的那个。
p = 1 /(1 +ε* 10 ^ 3);yy = csaps (xi, ybad, p,第二十一章);持有在情节(第二十一章,yy,“y”,“线宽”, 2)标题(sprintf()'添加1-p = %s的平滑样条,黄色显示', num2str(1-p)))保持不变从
你也可以提供csaps
有了误差权值,对某些数据点的关注程度要高于其他数据点。还有,如果你们不提供评估场地xx
,然后csaps
返回平滑样条的ppform。
最后,csaps
还可以处理向量值数据,甚至多元,网格数据。
由命令提供的三次平滑样条spaps
不同于在csaps
只有在它被选择的方式。以下是该文档的简写版本spaps
:
SPAPS平滑样条。
[SP,VALUES] = SPAPS(X,Y,TOL)返回b形式,如果被问及,
三次光滑样条f在X处的值
data (X(i),Y(:,i)), i=1,2,…, n。
光滑样条f使粗糙度最小
F(D²F) =∫(D²F(t))²dt (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²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))));传奇({“准确”,“吵”,“平滑”},“位置”,“西北”)
图标题显示的值p
你会用到csaps
为了准确地得到这些数据的平滑样条。
另外,这里是由csaps
当没有给出平滑参数时。在这种情况下csaps
通过某个特定的过程选择参数,该过程试图定位平滑样条对平滑参数最敏感的区域(类似于前面的讨论)。
持有在情节(第二十一章,fnval (csaps (xi, ybad)第二十一章),“- - -”)标题(“干净的数据,嘈杂的数据,平滑的值”)({传奇“准确”“吵”“spaps,指定公差”...默认平滑参数},“位置”,“西北”)举行从
的csaps
和spaps
命令的不同之处在于,通过一个平滑参数和一个公差来指定一个特定的平滑样条。另一个区别是spaps
除了三次平滑样条外,还可以提供线性或五次平滑样条。
当你希望二阶导数移动尽可能少的情况下,五次光滑样条比三次光滑样条更好。