The simplest solution on a recent enough version of matlab (2014b or newer) is to use histcounts which behaves exactly as you want: >>A = [100 150 190 200 250 300 350 370 390 400 400];
>>hiscounts(A, [100 200 300 400])
ans =
3 2 6
As per histc documentation, the last edge is its own bin and you can't do anything about that. If you want 400 to be included in the third bin and still use histc, you have to shift the edge of the 4th value slightly above 400 (and discard that last bin): A = [100 150 190 200 250 300 350 370 390 400 400];
edges = linspace(min(A),max(A),4);
edges(end) = edges(end) + eps(edges(end));
counts = histc(A, edges);
counts = counts(1:end-1)
Best Answer