【MATLAB】如何用最小二乘法拟合直线?

问题描述:

【MATLAB】如何用最小二乘法拟合直线?
已知x和y之间是线性关系,且y=kx+b,某次实验测得数据为 x=[1 2 3 4 5 6];y=[2.1 3.9 6.1 8.2 10.3 12]; 如何用MATLAB画出拟合直线并求出k和b的值?最小二乘法.
非线性度也能求出来最好!
1个回答 分类:综合 2014-12-15

问题解答:

我来补答
x=[1 2 3 4 5 6];
y=[2.1 3.9 6.1 8.2 10.3 12];
nh1=polyfit(x,y,2);%这里是二次拟合,你也可以先画出大概图形 估计它是几次曲线然后再判断是1 2 还是3..等.
m=1:.5:6;%m是根据散点x来定的.
nh2=polyval(nh1,m);
plot(x,y,'+',m,nh2)
这是拟合图形
用最小二乘法求值就是用最小二乘法所导出的正规方程组的矩阵形式来求.
根据题意求一次拟合系数如下:
for i=1:6
for j=1:2
A(i,j)=i.^(j-1)
end
end
K=A'*A;
Final=K'*A'*y'
求出的第一个数为b,第二个是k
程序没运行过 大概思想是这样的
 
 
展开全文阅读
剩余:2000
也许感兴趣的知识