我试图了解实现bspline基本功能的工作流程。
tauf Vd
0 0
0.048 502.8944826
0.072 743.5034753
0.096 791.2514106
0.12 825.3244319
0.144 858.1731717
0.168 889.1381766
0.192 922.4214306
0.216 952.9989296
0.24 982.8650001
basisValueMat_f
的结果:
1.000 0.000 0.000 0.000 0.000 0.000
0.000 0.076 0.551 0.364 0.009 0.000
0.000 0.013 0.393 0.533 0.062 0.000
0.000 0.000 0.234 0.596 0.170 0.000
0.000 0.000 0.121 0.547 0.331 0.001
0.000 0.000 0.057 0.420 0.496 0.027
0.000 0.000 0.023 0.273 0.591 0.114
0.000 0.000 0.007 0.140 0.570 0.283
0.000 0.000 0.001 0.044 0.408 0.547
0.000 0.000 0.000 0.001 0.085 0.914
0.000 0.000 0.000 0.000 0.000 1.000
图形表示:
代码:
norder = 4; % degree - 1
nbreaks = 2;
nbasis = nbreaks + norder - 2;
breaks = linspace(0,taufmax,nbreaks)';
wtaubasis = create_bspline_basis([0,max(breaks)], nbasis, norder, breaks);
basisValueMat_f = full(eval_basis(wtaubasis, tauf));
请帮助我了解create_bspline_basis
和eval_basis
函数的作用。我需要对这些信息进行数学解释。
答案 0 :(得分:2)
Basis functions类似于“构建块”,用于近似间隔中的函数。从图中可以看到,使用了几个基本函数来近似源函数。原始函数越复杂,在给定的误差下,就需要越多的基本函数对其进行近似。看一下这个动画,解释方波的Fourier series:
傅立叶变换( FT ;在上面的动画中显示为蓝色S(f)
)显示的信息与图表的“切片”相同:
区别在于,在Wikipedia的FT示例中,基函数的大小(正弦和/或余弦)在整个时间间隔内都是恒定的,但在样条插值示例中,基函数的大小(即多项式) )在整个时间间隔内保持平稳变化。
最后,要回答您的问题,评估基函数可以告诉您在给定点(或间隔)中哪个是最主要的基函数。我可以想到的一种用法是-如果某个功能比其他功能要占主导地位(例如图表中“ 1”点的情况),则可以完全忽略“不重要”的功能,同时保持整体插值的公平准确-可能会有一些计算上的好处。