chengtianmmz 发表于 2007-6-20 14:41

最小二乘法算法程序

呵呵,前几天在论坛上写了一个帖子给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 编辑

w89986581 发表于 2007-6-20 14:56

一猜就知道是好学心细的女孩子,欢迎。

chengtianmmz 发表于 2007-6-20 14:59

谢谢:@) 还得努力

ginger 发表于 2007-11-28 20:40

原帖由 chengtianmmz 于 2007-6-20 14:41 发表 http://www.chinavib.com/forum/images/common/back.gif
呵呵,前几天在论坛上写了一个帖子给eight,感谢他一语惊醒梦中人,把我从一个提问者变成了动手者,而后又继续自己的编程之旅。经过一个多星期的学习,我又有了一些体会。现在,我的作业已经完成了大部分,回头 ...
出来乍到!以后要多向你学习-----多动手,少提问!

wyyf 发表于 2009-9-7 20:30

不错,就是注释太少

aliu 发表于 2009-9-9 10:43

我也学习了,,谢谢

opqwer999 发表于 2011-5-18 19:45

谢谢分享

xiaoyi123 发表于 2011-7-29 14:20

收藏以后留着参考 学习

xyf21thc 发表于 2011-7-29 15:37

很好 很不错

didi-baba 发表于 2011-8-4 22:04

这个大学时学过~~~~~~~~

aiying 发表于 2011-8-11 16:42

回复 1 # chengtianmmz 的帖子

不错, 我初次来这里,很高兴以后一起讨论

女夭彦页 发表于 2012-11-22 09:01

学习学习~

细雨梧桐 发表于 2012-11-26 10:04

没事看看,多多学习

caoqihhu 发表于 2013-4-6 11:58

这论坛牛人真多!

ChaChing 发表于 2013-4-6 20:04

ginger 发表于 2007-11-28 20:40 static/image/common/back.gif
出来乍到!以后要多向你学习-----多动手,少提问!

个人以为"多动手,多讨论", 或许更好些!
多动手, 增进自己实力
多讨论, 学习别人精髓, 也比较不会偏颇
页: [1] 2
查看完整版本: 最小二乘法算法程序