matlab三次样条函数的绘制(spline和csape函数详解)
样条函数是工程中常用的插值函数。早期工程师制图时,把富有弹性的细长木条(所谓样条)用压铁固定在样点上,在其他地方让它自由弯曲,然后沿木条画下曲线。对于样条本身,可以利用材料力学的大柔度梁理论建立梁的挠度方程,根据理论,样条可以用分段插值三次函数表示。
由于样条曲线具有连续的二阶导数,所以光滑性好。matlab里有两个函数可以绘制样条曲线,一个是spline,一个是csape。虽然interp1中也可以绘制,优点是代码简单而且可以方便更换其它插值方法,但是功能也比较简单,对于边界条件的无法设置。
关于interp1可以参见官方帮助https://ww2.mathworks.cn/help/matlab/ref/interp1.html
三次样条曲线有4种边界条件。
自然边界条件,二阶导数在边界处为0,可视为简支梁,是最常用的边界条件。
第一边界条件,二阶导在边界处已知的边界条件。自然边界条件可视为特例。
第二边界条件,一阶导在边界处已知的边界条件。
循环边界条件,一阶导与二阶导在边界处相等的边界条件,适用于封闭或循环的图形。
如果既有第一边界由于第二边界,称为混合边界条件。
1.spline函数详解
spline函数只能实现自然边界条件和第二边界条件,可以实现一维或者高维的曲线插值。
官方spline实例可以参见:https://ww2.mathworks.cn/help/matlab/ref/spline.html
1.一维自然边界条件
格式cs=spline(x,y);
输入:x自变量,y函数值
输出:cs为三维样条插值函数构建的结构体。
cs结构体调用方法为yy=ppval(cs,xx);
xx为插值点,yy为插值得到的函数值。
%正弦曲线
r=pi*linspace(-1,1,100);
yr=sin(xr);
%1自然边界条件
x = pi*linspace(-1,1,5);%设置5个控制点
y = sin(x);
cs = spline(x,y);%样条函数
xx = linspace(x(1),x(end),100);%插值点
yy=ppval(cs,xx);%