如何用matlab求加权最小二乘法拟合曲线?
第一步,根据给出的xi、yi、wi分别赋值给x、y、w列变量
第二步,将xi与wi乘积赋值给X变量,即
X=w.*x
第三步,创建多项式系数矩阵,即
X1=[X.^4 X.^3 X.^2 X ones(size(x))]
第四步,使用regress函数求出拟合系数,即
[p,bint,r,rint,stats] = regress(y,X1)
第五步,显示拟合系数和相关系数
p1=p(1),p2=p(2),p3=p(3),p4=p(4),p5=p(5)
R^2=stats(1)
第六步,计算拟合值,即
Y=p(1)*X.^4+p(2)*X.^3+p(3)*X.^2+p(4)*X+p(5)
第七步,使用plot函数,绘制拟合曲线
用polyfit()语句可以,
polyfit(x,y,拟合次数n)
x,y是你的数据,n是你要进行几次拟合,填1的话为一次也就是最小二乘法拟合
你可以这样写
x=[0.250.50.7511.522.533.544.55678910111213141516]
y=[3068758282776868585150413835282518151210774]
p=polyfit(x,y,1)
plot(x,y,'b',x,polyval(p,x),'r') %如果作图的话,蓝线为原数据,红线为拟合数据。
先画散点图大致确定曲线类型。然后用polyfit,polyval函数(这两个是多项式拟合的),比如指数型,取对数就可以用。函数用法百度下就好。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)