⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 qr_house.m

📁 基于Householder transformation的QR分解。 其使用需要调用Householder transformation程序。
💻 M
字号:
function [r,q] = qr_house(x)

% purpose: 用Householder镜像变换计算QR分解,x = qr,size(x)=[m,n]
% 目前只适用于 m ≥ n 的情况,且size(q) = size(x)
% Data: 31/3/2008
% Version 1.0
% Copyright (C) 2008, Yang Chun
% 
% 输入 - x 为列满秩矩阵
% 输出 - q 为x的正交基
%      - r 为正交基的坐标,为上三角矩阵
% 
% r = qr_house(x) 返回正交基坐标
% [r,q] = qr_house(x) 返回正交基与正交基坐标

[m,n] = size(x);
if m > n
    iterend = n;
else
    iterend = n - 1;
end
for k1 = 1:iterend
    [v,beta] = house(x(k1:m,k1));
    G = v'*x(k1:m,k1:n);
    S = beta*v;
    x(k1:m,k1:n) = x(k1:m,k1:n) - S*G;
    x(k1+1:m,k1) = v(2:m-k1+1);
    d(k1) = beta;
end
clear G S

if nargout == 1 
    r = triu(x(1:n,:));
else
    r = triu(x(1:n,:));
    q = eye(m,n);
    for k1 = iterend:-1:1
        v = [1;x(k1+1:m,k1)];
        G = v'*q(k1:m,k1:n);
        S = d(k1)*v;
        q(k1:m,k1:n) = q(k1:m,k1:n) - S*G;
    end
end











⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -