以下是关于matlab中直线的最小二乘拟合,是矩阵除法的编程,求大神解释,谢谢!!(y=kx+b)
function[k,b]=linefit(x,y)n=length(x);x=reshape(x,n,1);y=reshape(y,n,1);A=[x,ones(n,1...
function[k,b]=linefit(x,y)
n=length(x);
x=reshape(x,n,1);
y=reshape(y,n,1);
A=[x,ones(n,1)];
bb=y;
B=A'*A;
bb=A'*bb;
yy=B\bb;
k=yy(1);
b=yy(2); 展开
n=length(x);
x=reshape(x,n,1);
y=reshape(y,n,1);
A=[x,ones(n,1)];
bb=y;
B=A'*A;
bb=A'*bb;
yy=B\bb;
k=yy(1);
b=yy(2); 展开
1个回答
展开全部
最小二乘估计的一般公式:已知Y = Hx;其中Y是测量数据,H是观测矩阵,x是待定参数。H应该是一个行数多于列数的矩阵。则,
X = (H.'*H)\H.'*Y
是x的最小二乘估计。
现在,要估计的参数就是[k; b]。每一次观测都可以表示为y = [x 1]*[k; b]. 将数据纵向排列起来,由此可以构造出Y和观测矩阵H。
X = (H.'*H)\H.'*Y
是x的最小二乘估计。
现在,要估计的参数就是[k; b]。每一次观测都可以表示为y = [x 1]*[k; b]. 将数据纵向排列起来,由此可以构造出Y和观测矩阵H。
更多追问追答
追问
最小二乘法求参数我理解,就是下面这些语句不是很理解,能帮忙解释一下吗?
bb=y;
B=A'*A;
bb=A'*bb;
yy=B\bb;
k=yy(1);
b=yy(2);
追答
就是这个式子X = (H.'*H)\H.'*Y 只是变量名起的不一样 只要做等式代入就可以把上面几行代码变成这一句了。请问您具体那里看不懂?
X向量的长度是2,从向量中取元素这个操作就是用()实现的。matlab中计数是从1开始的。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询