Givens Rotations 进行QR分解Matlab代码

  • Post author:
  • Post category:其他


Givens Rotations 进行QR分解Matlab代码

求任意矩阵的QR分解

function [Q,R]=givenQR(A)
n=size(A,2); %列数
m=size(A,1); %行数
R=A;
Q=eye(m);
for i=1:n-1 
    for j=i+1:m 
        x=R(:,i)
        rt=givens(x,i,j);%J矩阵
        %r=blkdiag(eye(i-1),rt)
        Q=Q*rt';
        R=rt*R;
    end
end

function [R,y]=givens(x,i,j)
xi=x(i);          
xj=x(j);
r=sqrt(xi^2+xj^2);
cost=xi/r;
sint=xj/r;
R=eye(length(x));
R(i,i)=cost;
R(i,j)=sint;
R(j,i)=-sint;
R(j,j)=cost;
y=x(:);
y([i,j])=[r,0];%sint cost



版权声明:本文为VioletHan7原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。