【MATLAB】如何用最小二乘法拟合直线?
已知x和y之间是线性关系,且y=kx+b,某次实验测得数据为x=[123456];y=[2.13.96.18.210.312];如何用MATLAB画出拟合直线并求出k和b...
已知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个回答
展开全部
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
程序没运行过 大概思想是这样的
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
程序没运行过 大概思想是这样的
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询