MATLAB and Simulink resources for Arduino, LEGO, and Raspberry Pi

Learn moreOpportunities for recent engineering grads.

Apply Today
Asked by PRIYANGA on 14 Dec 2012

I have to run the K-means clustering program using matlab.

im = imread('D:\lena256.jpg'); k=5; %histogram calculation img_hist = zeros(256,1); hist_value = zeros(256,1); for i=1:256 img_hist(i)=sum(sum(im==(i-1))); end

Run above code the following error occurred.

??? In an assignment A(:) = B, the number of elements in A and B must be the same. Error in ==> kmeansclustering at 10 img_hist(i)=sum(sum(im==(i-1))); Error in ==> main at 5 [clusters, result_image, clusterized_image] = kmeansclustering(im,k);

How do I solve this problem?

Answer by José-Luis on 14 Dec 2012

Accepted answer

Try

img_hist(i)= sum(sum(sum(im==(i-1))));

*im* might be a three dimensional matrix.

Answer by Jürgen on 14 Dec 2012

Hi,

there is a function: imhist(I) , quite useful for this work, + if you want to calculate the hist by summing for each value 0=>255 you will get a array with a lenght of 256 not 256*256

regards,J

## 3 Comments

Direct link to this comment:http://www.mathworks.com/matlabcentral/answers/56590#comment_117201

Please edit your post. It makes it easier for people to understand your question, and shows a modicum of interest on your part.

Your problem is that

and

are of different sizes.

Direct link to this comment:http://www.mathworks.com/matlabcentral/answers/56590#comment_117205

Incidentally, why not use HISTC to generate the histogram? Why re-invent that wheel with for-loops?

Direct link to this comment:http://www.mathworks.com/matlabcentral/answers/56590#comment_117219

ok Sir I have to try.