主题:matlab编程递推最小二乘法
glinfeng05
[专家分:0] 发布于 2008-03-27 23:50:00
今天老师布置一作业题,让编一程序,实现最小二乘法,用哪种语言都行,不过matlab最简单了,希望大家都能够帮一下忙,献一下计,谢了
回复列表 (共1个回复)
沙发
glinfeng05 [专家分:0] 发布于 2008-04-25 13:44:00
n=input('请输入阶次n=:');
u=input('请输入输入矩阵u=');
y=input('请输入输出矩阵y=');
c=size(u);
%求x(N)
r=[];
for i=1:c(2)-n+1 %行
for j=1:n %列
z(j)=y(n+i-j);
U(j)=u(n+i-j);
end
s=[-z U];
r(i,:)=s;
end
X=r';
%求P(N),K(N),cs(N)
cs=zeros(1,2*n)';%初始化参数a,b都为零
I=eye(2*n,2*n);
p=(1.0e+8)*I; %初始化p
for i=1:c(2)-n
k=p*X(:,i)/(1+(X(:,i))'*p*X(:,i)); %求出k(i)
p=p-p*X(:,i)/(1+(X(:,i))'*p*X(:,i))*(X(:,i))'*p; %求出p(i)
cs=cs+k*(y(n+i)-(X(:,i))'*cs); %求出cs(i)
end
a=cs(1:n,:)';
b=cs(n+1:2*n,:)';
a
b
我来回复