afei8233 发表于 2008-4-19 19:43

matlab最小二乘法

已知模型:y=a1u1+a2u2+e
取得3组实验数据为y(k):1,1,3   u1(k):1,2,1      u2(k):0,-1,2
求参数a1,a2的最小二乘估计??
请帮忙看一下,下面的程序能用的上吗?(我试了下,老是出错)
最小二乘法:
fid=fopen('input.txt','r+');
U=fscanf(fid,'%f',a);
fclose(fid);
fid1=fopen('output1.txt','r+');
Y=fscanf(fid1,'%f',a);
fclose(fid1);
U1=U(1:a-1);
U2=U(1:a-2);
Y1=Y(1:a-1);
Y2=Y(1:a-2);
D1=-1*;
D2=-1*;
D3=;
D4=;
D=;
Q=inv(D'*D)*D'*Y
下面是递推最小二乘的算法:
m=input('m=')
fid=fopen('input.txt','r+');
U=fscanf(fid,'%f',a);
fclose(fid);
fid1=fopen('output1.txt','r+');
Y=fscanf(fid1,'%f',a);
fclose(fid1);
U1=U(1:m-1);
U2=U(1:m-2);
Y1=Y(1:m-1);
Y2=Y(1:m-2);
Y3=Y(1:m);
D1=-1*;
D2=-1*;
D3=;
D4=;
D=;
Q=inv(D'*D)*D'*Y3;
P=inv(D'*D);
%以上程序是用最小二乘法计算的初值,取前m个数据%
for i=m:a-1;
    x=[-1*Y(i);-1*Y(i-1);U(i);U(i-1)];
    y=Y(i+1);
    p=1/(1+x'*P*x);
    Z=Q+P*x*p*(y-x'*Q);
    P=P-P*x*p*x'*P;
    q=norm(Z-Q)/norm(Q);
    Q=Z;
    if q<10e-6;
      k=i-m
      q
      Q
      break
    end
end
ppp='help me!'
希望能得到帮助!!谢谢
页: [1]
查看完整版本: matlab最小二乘法