LBG训练器 实现在二维坐标系下 点的分群
设置训练次数为十次,最后分群的重心坐标为红色方块
.m文件如下
function [ inic ] = LBG(data, N)
M = size(data, 2)
plot(data(1, 1:end), data(2, 1:end), 'o')
grid on
hold on
ptxt = cell(1,M);
ctxt = cell(1,N);
for i = 1:M
ptxt{i} = ['P' num2str(i)];
end
for i = 1:N
ctxt{i} = ['C' num2str(i)];
end
text(data(1, 1:end)+1, data(2, 1:end)+1, ptxt)
axis([0 100 0 100])
%initial centroid
rng(888)
rnd = randi([1, M], [1, N])
inic = data(:, rnd)
plot(inic(1, 1:end), inic(2, 1:end), 'rx')
text(inic(1, 1:end)+1, inic(2, 1:end)-2, ctxt, 'color', 'red')
%classification
D = zeros(N, M)
for i = 1 : N
for j = 1 : M
D(i, j) = sqrt(sum((inic(:, i) - data(:, j)).^2))
end
end
[~,Grp] = min(D)
%rechoose
for i = 1:N
inic(:, i) = mean(data(:, Grp == i), 2)
end
plot(inic(1, 1:end), inic(2, 1:end), 'bs')
num = 1;
w