mihainan

Givens2

Mar 27th, 2014
76
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
MatLab 0.63 KB | None | 0 0
  1. function [Q, R] = Givens2(A);
  2. [m, n] = size(A);
  3. Q = eye(m);
  4. for k = 1 : min (m - 1, n)
  5.     for l = k + 1 : n
  6.         r = sqrt(A(k, k) * A(k, k) + A(l, k) * A(l, k));
  7.         c = A(k, k) / r;
  8.         s = A(l, k) / r;
  9.         Ri=eye(n);
  10.         Ri(k,k)=c;
  11.         Ri(l,k)=s;
  12.         Ri(k,l)=-s;
  13.         Ri(l,l)=c;
  14.         %Ri*Ri'
  15.         Ri*A
  16.         if k==1 & l==2 G=Ri;
  17.         else G=G*Ri;
  18.            
  19.         end
  20.         if k==min(m-1,n) & l==n
  21.             Ri*A
  22.         end
  23.         G
  24.         %A([k, l], :) = [c, s; -s, c] * A([k, l], :);
  25.         %Q([k, l], :) = [c, s; -s, c] * Q([k, l], :);
  26.        
  27.     end
  28. end
  29. R=A;
Advertisement
Add Comment
Please, Sign In to add comment