我想计算高维矩阵的单位向量。
eig_vectors=(eig_vectors/sqrt(eig_vectors'*eig_vectors));
K>> size(eig_vectors)
ans =
400 153600
由于eig_vectors'*eig_vectors
而导致内存问题。什么是实现它的快速方法?
答案 0 :(得分: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