In Matlab I can find all non zero entries in a vector like this:
>> v = [0 1 0 0 1]
v =
0 1 0 0 1
>> indices = find(v)
i
i used to use sparse and full but now i switched to accumarray, because it has simpler format.
in your example:
v=accumarray([2;5],1)'
additionally, you can also cycle values (i think), according to the first matlab example:
Create a 5-by-1 vector, summing values for repeated 1-D subscripts:
subs = [1; 2; 4; 2; 4];
A = accumarray(subs, 101:105)
of course, according to its name, this function is built to do fancier things.