Then why not use imhist():
[pixelCount, grayLevel] = imhist(grayImage, 256);
With histc(), you have to define the edges and it bins everything in between the edges. The equivalent to imhist() might be
edges = -0.5 : 1.0 : 255.5; % Edges for a grayscale image.
[pixelCount, grayLevel] = histc(grayImage, edges);