# Householder Algorithm finding Q

32 vues (au cours des 30 derniers jours)
Frederick Melanson le 8 Mar 2021
Hi, i have this algorithm:
function [Q,R] = householder(A)
[m,n]=size(A);
Q=eye(m);
for k=1:n
z = -sign(A(k,k))*norm(A(k:m,k));
v = [zeros(k-1,1); A(k,k)-z; A(k+1:m,k)];
f = v'*v;
if f == 0, continue; end
for j = k:n
c = v'*A(:,j);
A(:,j) = A(:,j)-(2*c/f)*v;
end
end
R=A;
end
I get the correct R matrix, but I can't seem to find Q correctly. Please let me know ASAP
##### 2 commentairesAfficher AucuneMasquer Aucune
Jan le 9 Mar 2021
Modifié(e) : Jan le 9 Mar 2021
Terms like "ASAP" are not appropriate, if you ask voluntary members of an internet forum to help you.
What did you try to determine Q?
Frederick Melanson le 9 Mar 2021
I added an extra forloop at the end like this:
for j=k:m
c = v'*Q(:,j);
Q(:,j) = Q(:,j)-(2*c/f)*v;
end
Q=Q';
I get the lower triangular part of Q correctly, the problem is with the upper half of the matrix

Connectez-vous pour commenter.

### Réponses (1)

Athul Prakash le 12 Mar 2021
Hi Frederick,
You may prefer the MATLAB built-in qr() function.
[Q,R] = qr(M);
See this documentation:
Alternately, you may search the Mathworks File Exchange for alternate implementations of Householder algorithm. For example:
These are submissions by other MATLAB users, and not part of the MATLAB product. It is not tested or qualified by Mathworks, so use at your own responsibility.
##### 0 commentairesAfficher -2 commentaires plus anciensMasquer -2 commentaires plus anciens

Connectez-vous pour commenter.

### Catégories

En savoir plus sur Shifting and Sorting Matrices dans Help Center et File Exchange

### Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by