我已经使用较低波段k1和较高波段ku的带状矩阵。我想把它们放在三角形的下面,这样做,我正在使用QR Householder。因此,我修改了较低频段的QR Householder算法,但无法对上频段的算法进行修改。在下面,对于较低的波段,我将x阵列仅用于非零的位置。然后,当更新A时,它会更新一个矩形数组,该数组从上部带(我想忽略)中取零。我试图对那部分进行矢量化(忽略上部乐队的零点),但不能让它发挥作用。
function [U, R] = HouseH_QR(A, lowband) % so would like to add the upperband argument
[m, n] = size(A);
% algo from Trefethen with my mod for kl
% this works but not taking advantage of upperband
for k = 1:n,
kl = min(k+lowband, m); % the lower band
x = A(k:kl,k);
e = zeros(length(x),1); e(1) = 1;
u = sign(x(1))*norm(x)*e + x;
u = u./norm(u);
A(k:kl, k:n) = A(k:kl, k:n) - 2*u*u'*A(k:kl, k:n); % lower triang
U(k:m,k) = u;
end