声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 1526|回复: 0

[经典算法] matlab最小二乘法

[复制链接]
发表于 2008-4-19 19:43 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
已知模型: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*[0;Y1];
D2=-1*[0;0;Y2];
D3=[0;U1];
D4=[0;0;U2];
D=[D1 D2 D3 D4];
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*[0;Y1];
D2=-1*[0;0;Y2];
D3=[0;U1];
D4=[0;0;U2];

D=[D1 D2 D3 D4];
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!'

希望能得到帮助!!谢谢
回复
分享到:

使用道具 举报

您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-5-24 09:08 , Processed in 0.122238 second(s), 17 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表