矩阵分解中matlabQR分解自编源代码

来源:互联网 发布:中兴云计算怎么样 编辑:程序博客网 时间:2024/05/07 14:04

%author:野渡无人
%create date:2007-11-20
function [Q,R]=myqr(A)
Q=0;
R=0;
[m,n]=size(A);
if m~=n
    fprintf('请输入一个方阵');
    return;
end
alpha=zeros(m,n);
beta=zeros(m,n);
K=eye(m,n);
for i=1:m
    alpha(:,i)=A(:,i);
end
for i=1:m
    beta(:,i)=alpha(:,i);
    for j=1:i-1
        K(j,i)=dot(alpha(:,i),beta(:,j))/dot(beta(:,j),beta(:,j)) ;
        beta(:,i)=beta(:,i)-K(j,i)*beta(:,j);
    end
end
for i=1:n
    Q(:,i)=beta(:,i)/norm(beta(:,i));
    Beta(i)=norm(beta(:,i));
end
R=diag(Beta)*K;