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

Learn moreOpportunities for recent engineering grads.

Apply Today
Asked by FIR on 29 Nov 2012

Finally for the question in

http://www.mathworks.in/matlabcentral/answers/55028-finding-mean-for-values

i have found mean and for k means i get error

my code

By this way i have found mean

for i2=1:192

kl(:,:,i2)=kkk(:,:,i2);

kll=kkk(:,:,i2);

k3(:,:,i2)=mean(kll,3);

end

next i tried to do k means

for i2=1:192

k4(:,:,i2)=k3(:,:,i2);

k5=k4(:);

k3(:,:,i2)=kmeans(k5,3); end

I get error

??? Error using ==> kmeans>batchUpdate at 435 Empty cluster created at iteration 1.

Error in ==> kmeans at 336 converged = batchUpdate();

Error in ==> Samp2 at 52 k3(:,:,i2)=kmeans(kll,3);

please assist

*No products are associated with this question.*

Answer by Walter Roberson on 29 Nov 2012

"empty cluster" can occur by chance (kmeans does random initialization of positions), but more likely is the possibility that your points naturally form fewer than 3 clusters.

Show 1 older comment

Walter Roberson on 29 Nov 2012

What does "nearby" mean in this context. What does "around 5" mean in this context? How does this relate to using kmeans() ?

FIR on 29 Nov 2012

this does not relates to kmeans...in that i have found mean,,for all

now i want to check which al values are nearby ,at a difference of 5 and for that we have to find mean value

suppose val(:,:,1) has mean value of 145.23 and val(:,:,56) has mean of 149.10and val(:,:,103) has mean of 143.05 for all these three we have to find the mean,and so on

Walter Roberson on 29 Nov 2012

This current Question is about kmeans. Please move the other topic to an appropriate question.

Answer by ishaan on 13 Apr 2014

I received the above error too.. I am applying kmeas clustering on a Canny's Edge detected image with k param as 2.

I3 = imclose(I2,strel('disk',20)); Imed = medfilt2(rgb2gray(I3)); Ifilt = edge(Imed,'canny');

%I3 = applycform(Ifilt,makecform('srgb2lab')); %I = double(I3(:,:,2)); I = double(Ifilt(:,2)); szx2 = size(I,1); szy2 = size(I,2);

I = reshape(I,szx2*szy2,1); nColors = 2;

%% %%Image Manipulation Kmeans...............................................

[idx ct] = kmeans(I,nColors);

However i Received the empty cluster error. How to avoid the error. I need the edge detected image as well.

## 1 Comment

Direct link to this comment:http://www.mathworks.com/matlabcentral/answers/55120#comment_114347

After

kll=kkk(:,:,i2), the variable k11 is a matrix. Then usingmean(k11, 3)does not compute anything, but repliesk11. Finallyk3should be the same askkkand therefore I do not understand what you are doing.