插值和拟合
插值:
利用函数f (x)在某区间中已知的若干点的函数值,作出适当的特定函数,在区间的其他点上用这特定函数的值作为函数f (x)的近似值,这种方法称为插值法
拟合:
形象的说,拟合就是把平面上一系列的点,用一条光滑的曲线连接起来。因为这条曲线有无数种可能,从而有各种拟合方法。拟合的曲线一般可以用函数表示,根据这个函数的不同有不同的拟合名字。
以上是百度对二者的解释,归纳为:
我们可以利用*matlab实现对一系列的点列进行差值操作,具体内容如下:
interp1函数
y=interp1(x,y,xi,method),x,y是已知数据,xi是要内插的点,method是插值的方法,包括:
多项式拟合
- 多项式拟合指令方式
p=polyfit(x,y,n);x,y是已知数据,n是拟合的多项式的阶数。返回降幂排序的多项式系数。
一般拟合结束后,用yi=polyval(p,xi)计算出在xi中对应的函数值yi。用plot(xi,yi,‘r–’)进行绘图就可以得到拟合后的图像
>> x=[1 2 3 4 5 6 7 8 9];
>> y=[9 7 6 3 -1 2 5 7 20];
>> P=polyfit(x,y,3)
P =
0.1481 -1.4030 1.8537 8.2698
指定函数拟合
如果问题中已经知道函数形式,那么问题就变成了通过已知数据将函数中位置参数求出来,可以使用fittype函数自定义拟合函数,用fit函数根据自定义函数拟合出结果,fittype函数和fit函数具体用法参考Help。
建立.m文件
syms t;
x=[0 0.4 1.2 2 2.8 3.6 4.4 5.2 6 7.2 8 9.2 10.4 11.6 12.4 13.6 14.4 15];
y=[1 0.85 0.29 -0.27 -0.53 -0.4 -0.12 0.17 0.28 0.15 -0.03 -0.15 -0.071 0.059 0.08 0.032 -0.015 -0.02];
f=fittype('a*cos(k*t)*exp(w*t)','independent','t','coefficients',{'a','k','w'});%输入要拟合的函数,以及参数,自变量等-》自定义拟合函数
cfun=fit(x',y',f) %显示拟合后的结果
xi=0:.1:20;
yi=cfun(xi);
plot(x',y','r*',xi,yi,'b--');
结果是:
正在学习建模与matlab操作,顺便做做笔记hhh,第一篇博客草草结束啦!