2013-04-16 479 views
0

我一直在試圖向量化此功能的MATLAB:Matlab的矢量

function [Q,R]=gramSchmidtMod(A) 

n=size(A,1); 
R=zeros(n); 
for j=1:n 
    R(j,j)=norm(A(:,j)); 
    Q(:,j)=A(:,j)/R(j,j); 
    for i=j+1:n 
     R(j,i)=Q(:,j)'*A(:,i); 
     A(:,i)=A(:,i)-Q(:,j)*R(j,i); 
    end 


end 

我想:

j=1:n 
    R(j,j)=norm(A(:,j)); 
    Q(:,j)=A(:,j)/R(j,j); 
    i=j+1:n 
     R(j,i)=Q(:,j)'*A(:,i); 
     A(:,i)=A(:,i)-Q(:,j)*R(j,i); 

但這並不遵循相同的順序,因爲它會使用兩個for循環。 任何人都可以幫助我嗎?

+0

你的最後一個操作是設置爲A(:,我),你不返回作爲輸出,則是爲了什麼?我不想提供一個向量化,因爲原始代碼有缺陷,最終不會給出正確的結果。 – Oleg

回答

1

爲什麼你不只是使用

[Q,R]=qr(A)