clear; clc;
% 输入参数:
% A:待进行QR分解的矩阵(m×n矩阵)
A = [1 2 3; 4 5 6; 7 8 9]; % 示例矩阵
[m, n] = size(A);
Q = eye(n);
for j = 1 : n - 1
sigma = sign(A(j, j)) * norm(A(j:n, j), 2);
u = A(j:n, j) + sigma * eye(n - j + 1, 1);
beta = sigma * (sigma + A(j, j));
I = eye(n - j + 1);
Hj = I - 1 / beta * (u * u');
Hk = blkdiag(eye(j - 1), Hj);
Q = Q * Hk;
A = Hk * A;
end
R = A;
% 输出结果:
% Q:正交矩阵(满足Q'=Q逆)
% R:上三角矩阵(满足A=Q*R)
Q, R