使用matlab编写代码x和y分别为一组形如x = 00 005 0103448 0151515 02 025 0301972 0350153 0401319 04507 0501291 05506420600054 0651044 0700643 075088 0800281 085021 0900159 095和y = -0919674 -0447321 -0277143 -0101953 0
下面是使用matlab进行B样条拟合和求导的代码:
%% B样条拟合 t = linspace(0,1,length(x)); tq = linspace(0,1,1000); % 插值点 k = 4; % 阶数 sp = spap2(k,8,t,x); % 用样条拟合 yy = fnval(sp,tq); % 在插值点求值 plot(x,y,'o',tq,yy); % 画出散点图和拟合曲线
%% 求导 d_sp = fnder(sp,1); % 对样条求一阶导数 d_yy = fnval(d_sp,tq); % 在插值点求导数值 figure; plot(tq,d_yy); % 画出导数曲线
其中,spap2函数用于进行B样条拟合,k表示拟合的阶数,8表示拟合的自由度,t和x分别为样本点和对应的横坐标值。fnval函数用于在插值点求值,d_sp和fnder函数用于对样条进行求导,1表示求一阶导数。最后在两个figure中分别画出了拟合曲线和导数曲线。
原文地址: https://www.cveoy.top/t/topic/K0B 著作权归作者所有。请勿转载和采集!