matlab三次B样条曲线拟合算法求分段方程

参考

https://blog.csdn.net/liumangmao1314/article/details/54588155?utm_source=blogxgwz0

代码如下:

clc
clear
xx=[6.852,5.934,5.317,4.617,3.924,3.232,2.525,1.882,0.999];
yy=[1.399,1.399,1.226,0.859,0.212,0.339,-0.657,-0.892,-0.892];
xx=[xx(1)-xx(2)+xx(1),xx,xx(end)-xx(end-1)+xx(end)];
yy=[yy(1)-yy(2)+yy(1),yy,yy(end)-yy(end-1)+yy(end)];
hg=[];
for i=1:8
t=(0:0.001:1);
x0=xx(i);x1=xx(i+1);x2=xx(i+2);x3=xx(i+3);
y0=yy(i);y1=yy(i+1);y2=yy(i+2);y3=yy(i+3);
a0=(x0+4*x1+x2)/6;a1=-(x0-x2)/2;a2=(x0-2*x1+x2)/2;a3=-(x0-3*x1+3*x2-x3)/6;
b0=(y0+4*y1+y2)/6;b1=-(y0-y2)/2;b2=(y0-2*y1+y2)/2;b3=-(y0-3*y1+3*y2-y3)/6;
x=a0+a1*t+a2*t.^2+a3*t.^3;
y=b0+b1*t+b2*t.^2+b3*t.^3;
hg=[hg;a0,a1,a2,a3;b0,b1,b2,b3];%hg为x和y拟合的系数,16行,
              %第1,2行分别为第一段x,y的系数,3,4为第二段,类推
plot(x,y)
hold on
plot([xx(i+1),xx(i+2)],[yy(i+1),yy(i+2)])
hold on
end

结果

《matlab三次B样条曲线拟合算法求分段方程》

方程参数为hg

《matlab三次B样条曲线拟合算法求分段方程》

第一行所有为第一个方程横坐标x的常数项、一次项、二次项、三次项。

第二行所有为第一个方程纵坐标y的常数项、一次项、二次项、三次项。

3、4为第二个方程。

直到最后

    原文作者:是好人的墨叔
    原文地址: https://blog.csdn.net/weixin_41971010/article/details/110357063
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞