声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 3112|回复: 3

[共享资源] Householder变换的matlab实现

[复制链接]
发表于 2006-11-17 09:53 | 显示全部楼层 |阅读模式

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

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

x
  1. function [v,b]=Householder(x)
  2. if size(x,1)==1
  3.     x=x';
  4. end
  5. n=length(x);
  6. ninf=max(abs(x));
  7. if ninf==0
  8.     v=x;
  9.     b=0;
  10. return;
  11. end
  12. x=x/ninf;
  13. n2=dot(x(2:n),x(2:n));
  14. v=x;
  15. v(1)=1;
  16. if n2==0
  17.     b=0;
  18. else
  19.     a=sqrt(x(1)*x(1)+n2);
  20. if x(1)<=0
  21.     v(1)=x(1)-a;
  22. else
  23.     v(1)=-n2/(x(1)+a);
  24. end
  25. b=2*v(1)*v(1)/(n2+v(1)*v(1));
  26. v=v/v(1);
  27. end
  28. return
复制代码
回复
分享到:

使用道具 举报

 楼主| 发表于 2006-11-17 09:53 | 显示全部楼层
  1. function [A,d]=HouseholderQR(A)
  2. [m,n]=size(A);
  3. I=diag(ones(m,1));
  4. d=zeros(n,1);
  5. for j=1:n
  6.     [v,b]=Householder(A(j:m,j));
  7.     A(j:m,j:n)=(I(j:m,j:m)-b*v*v')*A(j:m,j:n);
  8.     d(j)=b;
  9.     if j<m
  10.         A(j+1:m,j)=v(2:m-j+1);
  11.     end;
  12. end;
复制代码

评分

1

查看全部评分

发表于 2007-6-12 16:00 | 显示全部楼层
这么好的帖子,顶一下。顺便问以下2个函数的功能是一样的吧:loveliness:
发表于 2007-6-12 22:37 | 显示全部楼层
感谢资源共享,又学到了东西:@)
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

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

GMT+8, 2024-5-18 11:30 , Processed in 0.271253 second(s), 21 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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