MATLAB软件提供了基本的曲线拟合函数的命令.

1.函数拟合

多项式函数拟合:a=polyfit(xdata,ydata,n)

其中n表示多项式的最高阶数,xdata,ydata为将要拟合的数据,它是用数组的方式输入.输出参数a为拟合多项式

y=a1xn+...+anx+a n+1的系数

多项式在x处的值y可用下面程序计算.

y=polyval(a,x,m)

线性:m=1,

二次:m=2,

polyfit的输出是一个多项式系数的行向量。为了计算在xi数据点的多项式值,调用MATLAB的函数polyval。

例:

x=0:0.1:1;

y=[-0.447 1.978 3.28 6.16 7.08 7.34 7.66 9.56 9.48 9.30

11.2];

A=polyfit(x,y,2)

Z=polyval(A,x);

Plot(x,y,’r*’,x,z,’b’)

一般的曲线拟合:p=curvefit(‘Fun’,p0,xdata,ydata)

其中Fun表示函数Fun(p,data)的M函数文件,p0表示函数的初值.curvefit()命令的求解问题形式是最小二乘解

若要求解点x处的函数值可用程序f=Fun(p,x)计算.

2、函数插值

一维插值:

interp1(x,y,cx,’method’)

一维插值:

interp1(x,y,z,cx,cy,’method’)

method:nearest、linear、spline、cubic

例:

clear

echo

on

x=-2:0.4:2;

y=[2.8 2.96 2.54

3.44 3.56 5.4

6.0 8.7 10.1 13.3

14.0];

t=-2:0.01:2;

nst=interp1(x,y,t,'nearest');

plot(x,y,'r*',t,nst)

title('最临近点插值')

lnr=interp1(x,y,t,'linear');

figure(2)

plot(x,y,'r*',t,lnr,'b:')

title('线性插值')

spl=interp1(x,y,t,'spline');

figure(3)

plot(x,y,'r*',t,spl)

title('样条插值')

cbc=interp1(x,y,t,'cubic');

figure(4)

plot(x,y,'r*',t,cbc,'k-')

title('三次插值')3

二维插值

二维插值是基于与一维插值同样的基本思想。然而,正如名字所隐含的,二维插值是对两变量的函数z=f(x,

y)进行插值。interp2的基本形式是interp2(x, y, z, xi, yi,

method)。这里x和y是两个独立变量,z是一个应变量矩阵。x和y对z的关系是

z(i, :) = f(x,

y(i))和z(:, j) = f(x(j), y).

也就是,当x变化时,z的第i行与y的第i个元素y(i)相关,当y变化时,z的第j列与x的第j个元素x(j)相关,。xi是沿x-轴插值的一个数值数组;yi是沿y-轴插值的一个数值数组。

可选的参数method可以是'linear','cubic'或'nearest'。在这种情况下,cubic不意味着3次样条,而是使用3次多项式的另一种算法。linear方法是线性插值,仅用作连接图上数据点。nearest方法只选择最接近各估计点的粗略数据点。在所有的情况下,假定独立变量x和y是线性间隔和单调的。关于这些方法的更多的信息,可请求在线帮助,例如,»

help interp2,或参阅MATLAB参考手册。

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐