matlab关于spline的疑问

来源:百度知道 编辑:UC知道 时间:2024/06/22 16:53:17
如果我有些节点X,Y 用spline的时候节点x=[0 1 2 3];y=[1 2 1 2]和x=[0 1 3 2];y=[1 2 2 1]没有区别,即它不会区分它们的顺序,那有没有种画图的方法可以区分出它们呢?(要经过顺序它们并能保证至少二次光滑)
或者说因为区别它们的话就不是个函数了~(一个X有两个Y),那有没有中什么matlab的库函数可以忽略这东西就给我画出来图呢?
能不能具体些? polyfit怎么用?

看来你要了解一下什么是插值,什么是拟合。

插值:在平面上有若干个点,要求横坐标不相同,然后要确定一个函数,使得这个函数的图像经过这些已知点;

拟合:在平面上有若干个点,然后要确定一个函数,使得这个函数的图像跟这些已知点在某个准则(最常用的是最小二乘准则)下最近;

spline是专门做插值的命令,想做拟合用polyfit

polyfit的用法

x=[1 2 3 4 5];
y=[1.01 1.98 3.01 4.02 4.99];
a=polyfit(x,y,1)

输出结果
a =

1.0000 0.0020

就是说由(1,1.01),(2,1.98),(3,3.01),(4,4.02),(5,4.99)拟合的直线是

y=1.000x+0.0020

跟直线y=x差不多了吧!

这就是用直线拟合;

你想用二次多项式、三次多项式……拟合的话,把a=polyfit(x,y,1)中的1改为2,3,……