function [Q,R] = QR_Householder(A)
%===============================================
% ハウスホルダー変換によるQR分解
%===============================================
[n,m]=size(A);

for k=0:m-1
    if k==0
        R=A;
        Q=eye(n);
    end
    C2=R(k+1:n,k+1:m);
    x=C2(:,1);
    y=zeros(length(x),1);
    y(1)=-sign(x(1))*sqrt(x'*x);
    u=(x-y)/sqrt((x-y)'*(x-y));
    if k==0
        H=eye(length(x))-2*u*u';
    else
        H=zeros(n);
        H(1:k,1:k)=eye(k);
        H(k+1:n,k+1:n)=eye(length(x))-2*u*u';
    end
    tR=H*R;
    tQ=H*Q;
    clear R Q;
    R=tR;
    Q=tQ;
    clear tR tQ C2 x y u H;
end

end

タグ

コメントをかく


「http://」を含む投稿は禁止されています。

利用規約をご確認のうえご記入下さい

Wiki内検索

Menu

ここは自由に編集できるエリアです。

Menu

ここは自由に編集できるエリアです。

管理人/副管理人のみ編集できます