
Efficiently computing large numbers of vector norms
Posted:
Nov 7, 2012 4:58 PM


I am frequently faced with problems where I need to find the norm (squared) of row vectors having the following structure:
A(:,i)'*X
where A is (N x Q) complex, and solutions must be found for all i = 1,2,...,Q. Doing this efficiently turns out to be extraordinarily important in my code. In this simple case, I find the following to be pretty swift (compared to a for loop):
sum(abs(A'*X).^2,2)
However, I become stumped with a slightly more complicated case:
kron(A1(:,i),A2(:,j))'*X2
where now a fast solution is needed for all i = 1,2,...,Q1 and j = 1,2,...,Q2. Here, I resort to:
Z = zeros(Q1,Q2); for j = 1:Q2 Z(:,j) = sum(abs(kron(A1,A2(:,j))'*X2).^2,2); end
Is there a neat way to speed this up? Is there a way to further speed up my sum(abs(A'*X).^2,2)? Efficiency really is critical here!

