function T = sumv(T, sum_over)
% sumv(T, dims)  Sum multidimensional array T over dimensions 'dims' and squeeze the result
% This is like the built-in sum, but you can pass a vector of dimensions to sum over
% Example
% T = reshape(1:8, [2 2 2])
% sumv(T, [1 3]) = sum(sum(T,1),3) = [14 22] = [1+2 + 5+6, 3+4 + 7+8]
%  since
%T(:,:,1) =
%     1     3
%     2     4
%T(:,:,2) =
%     5     7
%     6     8

for i=1:numel(sum_over)
    T = sum(T, sum_over(i));
end
T = squeeze(T);

% loop much faster than vectorized solution
% dims = 1:ndims(M);
% s = size(M);
% keep = setdiffPMTK(dims,ndx);
% M = squeeze(sum(reshape(permute(M,[ndx,keep]),[prod(s(ndx)),s(keep)]),1));