Matlab comes with K-means clustering ‘out of the box’. The GNU Octave work-a-like system doesn’t, and there seem to be quite a few implementations floating around. I picked the first from Google, pretty carelessly, saving as myKmeans.m. These are notes from trying to reproduce this Matlab demo with Octave. Not rocket science but worth writing down so I can find it again.

M=4 W=2 H=4 S=500 a = M * [randn(S,1)+W, randn(S,1)+H]; b = M * [randn(S,1)+W, randn(S,1)-H]; c = M * [randn(S,1)-W, randn(S,1)+H]; d = M * [randn(S,1)-W, randn(S,1)-H]; e = M * [randn(S,1), randn(S,1)]; all_data = [a;b;c;d;e]; plot(a(:,1), a(:,2),'.'); hold on; plot(b(:,1), b(:,2),'r.'); plot(c(:,1), c(:,2),'g.'); plot(d(:,1), d(:,2),'k.'); plot(e(:,1), e(:,2),'c.'); % using http://www.christianherta.de/kmeans.html as myKmeans.m [centroid,pointsInCluster,assignment] = myKmeans(all_data,5) scatter(centroid(:,1),centroid(:,2),'x');

[...] identify clusters in data. This is the original page where k-means code comes from, and here is an example of how it can be [...]