2015-11-12 36 views
0

我想計算高維矩陣的單位向量。計算高維矩陣的單位向量

eig_vectors=(eig_vectors/sqrt(eig_vectors'*eig_vectors)); 


K>> size(eig_vectors) 

ans = 

     400  153600 

由於eig_vectors'*eig_vectors,它會發生內存問題。什麼是實現它的快速方法?

+3

你不是應該找理清內存問題,請問如何解決它,而不是跳上使其更快? – Divakar

+0

@Divakar感謝您的回覆!記憶問題是第一優先。 –

+0

因此,請提出具體的問題。目前來看,它太廣泛了。 – Divakar

回答

0

您可以通過直接求和矩陣元素的平方來計算範數,從而避免了大的矩陣乘法。

eig_vectors = bsxfun(@rdivide,eig_vectors,sqrt(sum(eig_vectors.^2,2))) 

如果這仍然是你的內存問題,您可以隨時用循環去

for iVector = 1:size(eig_vectors,1) 
     eig_vectors(iVector,:) = eig_vectors(iVector,:)./norm(eig_vectors(iVector,:)); 
    end 
+0

代碼生成的數字與問題中的代碼不同。 – Daniel

+0

@Daniel:的確如此。目前,我會假設OP想要將每個向量除以它的2範數,並在他們的代碼中犯了一個錯誤:) – Jonas