如何用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函数,绘制拟合曲线
参考代码%生成测试数据a0=1;a1=2;a2=3;x1=rand(10,10);x2=rand(10,10);Y=a0+a1*x1+a2*x2;%加入随机噪声Y=Y+0.1*randn(size(y));%拟合函数形式f=@(k,x)k(1)+k(2)*x(:,1)+k(3)*x(:,2);x=[x1(:)x2(:)];k=lsqcurvefit(f,[1111],x,Y(:))n=size(x,1);p...