% macierz do rozkładu
rand("state", 1)
A = rand(5, 3)

% wyznaczenie macierzy Q
k = size(A,2)
for i = 1:k
  y(:,i) = A(:,i);

  for j = 1:(i-1)
    y(:,i) = y(:,i) - sum(A(:,i).*y(:,j))*y(:,j)/sum(y(:,j).*y(:,j));
  end
  Q(:,i) = y(:,i)/sqrt(sum(y(:,i).*y(:,i)));
end
Q

% kontrola
Q'*Q
