matlab中曲线拟合的最优标准是采用最常见的最小二乘法,而所谓曲线拟合就是利用最小二乘法使得拟合多项式在各节点处的偏差达到最小。
给出一组数据的话就可以进行数据拟合。
你说的应该是2次拟合多项式
程序如下:
t=输入数据;
y=输入数据;
p=polyfit(t,y,3)
然后就可以进行数据拟合了。
用polyfit()语句可以
polyfit(x,y,拟合次数n);
x,y是你的数据,n是你要进行几次拟合,填1的话为一次也就是最小二乘法拟合
你可以这样写
x=[ 025 05 075 1 15 2 25 3 35 4 45 5 6 7 8 9 10 11 12 13 14 15 16];
y=[30 68 75 82 82 77 68 68 58 51 50 41 38 35 28 25 18 15 12 10 7 7 4];
p=polyfit(x,y,1);
plot(x,y,'b',x,polyval(p,x),'r'); %如果作图的话,蓝线为原数据,红线为拟合数据
不知道对你有没有帮助
“/”是矩阵右除的符号,对应的函数是mrdivide。矩阵右除是通过左除实现的,也就是说,A/B = (B'\A')'。
“\”是矩阵左除的符号,对应的函数是mldivide。
x=A\B是线性方程组Ax=B的解,而x=B/A是线性方程组xA=B的解(如果方程组欠定或超定,则解为最小二乘意义上的)。
以你举的例子来说,相当于求3x=1,4x=2,5x=3这样一个方程组的解,显然这个方程组属于超定的情况,无解,但可以求出最小二乘解x=052。
使用最小二乘拟合函数可以求出相同的解来:
k=lsqcurvefit(inline('kx','k','x'),0,[3 4 5],[1 2 3])
>> clear
>> x=[19 ,25 ,31 , 38, 44];
>> f=[190,323,490,733,978];
>> xx=x^2;
>> A=[xx;ones(size(x))]';
>> c=A\f';
>> a=c(2);
>> b=c(1);
>> y=a+bxx;
>> plot(x,f,'',x,y,'r')
做出的图,点表示原始数值。红线为拟合的直线。
以上就是关于在matlab 中用最小二乘法拟合y=a*x^2+b*x的程序要如何写全部的内容,包括:在matlab 中用最小二乘法拟合y=a*x^2+b*x的程序要如何写、如何用matlab实现线性最小二乘估计、加权最小二乘法MATLAB程序等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)