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

这篇博客详细介绍了如何用MATLAB进行三次多项式插值,以连续方式拟合离散数据点。代码示例展示了如何通过循环遍历数据段,计算每一段的多项式系数,并绘制出拟合曲线。最终得到的`hg`矩阵包含了所有段的插值参数。
摘要由CSDN通过智能技术生成

参考

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

结果

方程参数为hg

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

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

3、4为第二个方程。

直到最后

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

是好人的墨叔

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值