clear all
e=.001;
x = normrnd(0,1,[1,100]);
vect_x = [x(1:2:100);x(2:2:100)];
vect_x = vect_x';
codebook = [0,0;0,1.5;-1,1.5;-1.5,0;-1,-1.5;1,-1.5;1.5,0;1,1.5]
figure;
plot(vect_x(:,1),vect_x(:,2),'k*','MarkerSize',5);
hold on
plot(codebook(:,1),codebook(:,2),'kx','MarkerSize',15,'LineWidth',3);
title 'Original data';
xlabel 'x';
ylabel 'y';
hold off
%codebook = round([vect_x(1:8,:)]*100)/100; %%
D = 0;
k = 0;
LC = 2;
s = 0;
k = 0;
v = 0;
t = 0;
while (t ~= 9)
for i = 1:8
L = 1;
for j = 1:size(vect_x,1)
m = disteu(vect_x(j,1:2),codebook(i,:));
mn = m;
for k = 1:8
if k ~= i
mn = min(mn,disteu(vect_x(j,:),codebook(k,:)));
end
end
if m == mn && not(ismember(j,s))
s(i,L) = j;
L = L+1;
end
end
end;
% updating cluster centers
sm = 0;
for i = 1:8
vect = s(i,:);
vect(vect == 0) = [];
codebook(i,1)=sum(vect_x(vect,1))/size(vect,2);
codebook(i,2)=sum(vect_x(vect,2))/size(vect,2);
for j = 1:size(vect)
sm=sm+disteu(vect_x(vect(j),:),codebook(i,:));
end
end
k = k + 1;
D(k) = sm;
if k ~=1
if D(k-1)-D(k)/D(k)<0.1
t = 300;
break;
end
end
v = v +1;
end
figure;
plot(vect_x(:,1),vect_x(:,2),'k*','MarkerSize',5);
hold on
plot(codebook(:,1),codebook(:,2),'kx','MarkerSize',15,'LineWidth',3);
title 'Result';
xlabel 'x';
ylabel 'y';
hold off
i = 1
for o = 1:size(vect_x,1)
for g = 1:8
if ismember(o,s(g,:));
k(i,1:2) = codebook(g,:);
i = i+1;
end
end
end