2013-04-16 304 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)