请问Matlab中如何将离散点连成曲线,谢谢了!
>x=[0 1 2 3 4 5 6 7 8 8.85],y=[13 12.1 11 10.5 10.1 9.9 9.6 9.3 9.0 8.9] //MATLAB中输入X及Y的数值
>xx=0:0.01:10; //对X轴进行划分成若干等份,设置好参数
>yy=spline(x,y,xx);//三次方样条数据插值
>plot(x,y,'o',xx,yy) //输出结果
程序运行如下:
扩展资料
样条线可以采用单段和多段的方式创建。对于单段样条线来说。阶次=点数-1,因此单段样条线最多只能使用25个点。单段构造方式受到一定的限制,定义点的数量越多,样条线的阶次越高,而阶次越高样条线会出现意外结果,如变形等。而且单段样条线不能封闭,因此不建议使用单段构造样条线。
在插值问题中,样条插值通常比多项式插值好用。用低阶的样条插值能产生和高阶的多项式插值类似的效果,并且可以避免被称为龙格现象的数值不稳定的出现。并且低阶的样条插值还具有“保凸”的重要性质。
在计算机科学的计算机辅助设计和计算机图形学中,样条通常是指分段定义的多项式参数曲线。由于样条构造简单,使用方便,拟合准确,并能近似曲线拟合和交互式曲线设计中复杂的形状,样条是这些领域中曲线的常用表示方法。
参考资料来源:百度百科—样条
b=[13 12.1 11 10.5 10.1 9.9 9.6 9.3 9.0 8.9] %纵坐标
%第一种,直接将离散点连成直线
plot(a, b, 'b'); %自然状态的画图效果
hold on;
%第二种,画平滑曲线的方法
c = polyfit(a, b, 2); %进行拟合,c为2次拟合后的系数
d = polyval(c, a, 1); %拟合后,每一个横坐标对应的值即为d
plot(a, d, 'r'); %拟合后的曲线
%plot(a, b, '*'); %将每个点 用*画出来
%hold on;
%第三种,画平滑曲线的方法
values = spcrv([[a(1) a a(end)];[b(1) b b(end)]],3);
plot(values(1,:),values(2,:),'b');
xx=0:0.01:10;
yy=spline(x,y,xx);
plot(x,y,'o',xx,yy)
向左转|向右转
plot(x,y)