最小二乘法算法程序
呵呵,前几天在论坛上写了一个帖子给eight,感谢他一语惊醒梦中人,把我从一个提问者变成了动手者,而后又继续自己的编程之旅。经过一个多星期的学习,我又有了一些体会。现在,我的作业已经完成了大部分,回头再看当初贴在论坛上的程序觉得真丢人:@L ,居然写得那么“笨”,可惜帖子已经不能修改了,只能留在那里继续丢人了。不过,那倒也记录了我成长的历程:@)其实最小二乘法也可以写得不像我原来的那么麻烦:
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!'
[ 本帖最后由 eight 于 2007-6-20 15:23 编辑
一猜就知道是好学心细的女孩子,欢迎。 谢谢:@) 还得努力 原帖由 chengtianmmz 于 2007-6-20 14:41 发表 http://www.chinavib.com/forum/images/common/back.gif
呵呵,前几天在论坛上写了一个帖子给eight,感谢他一语惊醒梦中人,把我从一个提问者变成了动手者,而后又继续自己的编程之旅。经过一个多星期的学习,我又有了一些体会。现在,我的作业已经完成了大部分,回头 ...
出来乍到!以后要多向你学习-----多动手,少提问! 不错,就是注释太少 我也学习了,,谢谢 谢谢分享 收藏以后留着参考 学习 很好 很不错 这个大学时学过~~~~~~~~ 回复 1 # chengtianmmz 的帖子
不错, 我初次来这里,很高兴以后一起讨论
学习学习~ 没事看看,多多学习 这论坛牛人真多! ginger 发表于 2007-11-28 20:40 static/image/common/back.gif
出来乍到!以后要多向你学习-----多动手,少提问!
个人以为"多动手,多讨论", 或许更好些!
多动手, 增进自己实力
多讨论, 学习别人精髓, 也比较不会偏颇
页:
[1]
2