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

📄 qr_hhouse.m

📁 基于hyperbolic Householder transformation的QR分解。 其使用需要调用hyperbolic Householder transformation程序。
💻 M
字号:
function R = qr_hhouse(x,p,q)

% purpose: 利用Hyperbolic Householder变换对块Hankel矩阵x进行快速QR分解,
% x = QR,size(x)=[m,n]
% 目前只适用于 m ≥ n 的情况
% Data: 6/4/2008
% Version 1.0
% Copyright (C) 2008, Yang Chun
% 
% 输入 - x 为列满秩矩阵
%       - p与q分别为每个块的行数和列数
% 输出 - R 为正交基的坐标,为上三角矩阵
% 
% R = qr_hhouse(x,p,q) 返回正交基坐标


[m,n] = size(x);

R1 = qr_house(x(:,1:q));
R1 = R1(1:q,1:q);
b = x(1:m-p,1:q)'*x(1:m-p,q+1:n) + x(m-p+1:m,1:q)'*x(m-p+1:m,q+1:n);
Z = zeros(q,n-q);
for k1 = 1:n-q
    Z(1,k1) = b(1,k1)/R1(1,1);
    for k2 = 2:q
        Z(k2,k1) = (b(k2,k1) - R1(1:k2-1,k2)'*Z(1:k2-1,k1))/R1(k2,k2);
    end
end
% Z = R1'\(x(1:m-p,1:q)'*x(1:m-p,q+1:n) + x(m-p+1:m,1:q)'*x(m-p+1:m,q+1:n));

R = zeros(n);
R(1:q,:) = [R1,Z];
f = [zeros(1,n-q);x(m-p+1:m,q+1:n);x(1:p,1:n-q);Z];
clear x R1 Z

for k1 = 1:n-q
    f(1,:) = R(k1,1:n-q);
    [v,beta] = hhouse(f(:,k1),p,q);
    G = v'*f(:,k1:n-q);
    S = beta*v;
    f(p+2:2*p+q+1,k1:n-q) = -f(p+2:2*p+q+1,k1:n-q);
    f(:,k1:n-q) = f(:,k1:n-q) - S*G;
    R(q+k1,q+k1:n) = f(1,k1:n-q);
end



⌨️ 快捷键说明

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