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 版权协议,转载请附上原文出处链接和本声明。