Clustering of data using k-means

Hello, I have a vector with data and, when I plot them, they divide into four patterns, as you can see in the figure (the 2 of them in the middle are very close). I also know from the theory that I should have 4 of these curves. Because of numerical errors, I cannot analytically identify these groups. Therefore, I tried kmeans, and I used the following code
R = real(vector(1:2:end));
I = imag(vector(1:2:end));
X = [R I];
[idx,~] = kmeans(X,4,'replicates',5);%,'Distance','correlation');
figure
plot(X(:,1),X(:,2),'*')
%idx = clusterdata(X,'Maxclust',ncond,'Distance','jaccard');
figure;
plot(X(idx==1,1),X(idx==1,2),'r.','MarkerSize',12)
hold on
plot(X(idx==2,1),X(idx==2,2),'b.','MarkerSize',12)
hold on
plot(X(idx==3,1),X(idx==3,2),'k.','MarkerSize',12)
hold on
plot(X(idx==4,1),X(idx==4,2),'g.','MarkerSize',12)
legend('Cluster 1','Cluster 2','Cluster 3','Cluster 4')
However, how you can see in the figure, the clustering is horizontal, whereas it should be vertical.
I tried to tune the kmeans function with no success. I think the problem could be the different scale for the x and y data. I tried to multiply the x data for 1e2, but nothing changed. Does anyone have any idea how can I correctly cluster these data? I also attach the vector of data I am using. The values are complex conjugate, and in the plot, I am plotting only the values for the negative imaginary part.

Answers (0)

Products

Release

R2018a

Asked:

on 25 May 2018

Commented:

on 6 Aug 2019

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!