文档介绍:Matlab拟合与插值
拟合原理
已知一组(二维)数据,即平面上 n个点(xi,yi) i=1,…n, 寻求一个函数(曲线)y=f(x), 使 f(x) 在某种准则下与所有数据点最为接近,不要求曲线(面)通过所有数据点,而是要求它反映对象整体的变化趋势,这就是数据拟合,又称曲线拟合或曲面拟合。
Matlab拟合
matlab拟合函数
Polyfit
命令格式:p=polyfit(x,y,n),其中x和y为样本点向量,n为所求多项式的阶数,p为求出的多项式系数。
Polyfit例子:
x=0::1;
y=[- ];
A=polyfit(x,y,2)
z=polyval(A,x);
plot(x,y,'k+',x,z,'r') %作出数据点和拟合曲线的图形
x=0::1;
y=[- ];
Z=[- ]
lsqcurvefit
输入格式为:
(1) x = lsqcurvefit (‘fun’,x0,xdata,ydata);
(2) x =lsqcurvefit (‘fun’,x0,xdata,ydata,options);
(3) x = lsqcurvefit (‘fun’,x0,xdata,ydata,options,’grad’);
(4) [x, options] = lsqcurvefit (‘fun’,x0,xdata,ydata,…);
(5) [x, options,funval] = lsqcurvefit (‘fun’,x0,xdata,ydata,…);
(6) [x, options,funval, Jacob] = lsqcurvefit (‘fun’,x0,xdata, xdata,ydata,…);
1
function F = myfun(x,xdata)
F = x(1)*sin(xdata)+x(2);
方法一:调用M文件(M文件名为:)
2
function main
xdata = [5;4;6];
ydata = 3*sin([5;4;6])+6;
x = lsqcurvefit('myfun',[2 7], xdata, ydata)
%x = lsqcurvefit(***@myfun,[2 7], xdata, ydata)
结果:x=
方法二:调用函数(函数名为:myfun)
function main
xdata = [5;4;6];
ydata = 3*sin([5;4;6])+6;
x = lsqcurvefit(***@myfun, [2 7], xdata, ydata)
%***@myfun 调用函数[2 7] 为初始值,为x0
%@可以调用文件或调用函数
function F = myfun(x,xdata)
F = x(1)*sin(xdata)+x(2);
结果:x=
function main
xdata = [5;4;6];
ydata = 3*sin([5;4;6])+6;
fun = inline('x(1)*sin(xdata)+x(2)','x','xdata');
x = lsqcurvefit(fun,[2 7], xdata, ydata)
结果:x=
方法三:直接写入拟合函数
输入格式为:
1) x=lsqnonlin(‘fun’,x0);
2) x= lsqnonlin (‘fun’,x0,options);
3) x= lsqnonlin (‘fun’,x0,options,‘grad’);
4) [x,options]= lsqnonlin (‘fun’,x0,…);
5) [x,options,funval]= lsqnonlin (‘fun’,x0,…)
方法一:调用M文件(M文件名为:)
1
function f=myfun (x)
tdata=100:100:1000;
cdata=1e-03*[,,,,,,,,,