Warning: this is obviously a pretty dumb function, that will be useful when you need to often vectorize indexed matrices.
In matlab you usually vectorize a multidimensional matrix by indexing it with (:), e.g. x(:).
However, if you are trying to vectorize only selected columns or lines in the matrix this is not possible, meaning you can't do something like
hist (x(index,:))
sum (x(index,:))
The usual workaround implies copying the needed elements as a new matrix, as in
x2 = x(index,:);
hist (x2(:));
sum (x2(:));
which crowds your namespace with useless variables and makes your code more complex. Using the (allegedly dumb, but convenient) flat() function, this becomes
hist(flat(x(index,:)));
sum(flat(x(index,:)));
which is both easy to understand, clean and doesn't store the intermediate values.
This was inspired by the numpy x.flat() function. |