Suppose that "r" is a multidimensional array of size [N, N, M] and "tab" is a table of size [N] with values 1..N (e.g. take "tab=randperm(N)"). I'm looking for efficient way to do the following:
c = ones(M, 1);
for k=1:N
c = c .* squeeze(r(tab(k),k,:));
end
I'd like to do that in matrix notation, using prod, but didn't find a solution, as "r(tab(1:N),1:N,:)" returns an NxNxM matrix rather than N rows.
Any suggestions?