📄 kmean.m
字号:
function [gau,center,variance]= kmean(x,group,dataNum)
center = randperm(50);
center = center(1:group);
center = x(center);
sumtimes = zeros(1,group);
sumA = zeros(1,group);
variance = zeros(1,group);
[dnum dnum] = size(x);
oldbelong = 100*ones(1,dnum);
for k = 1: 100000
minv = 1000000;
for i=1:dnum
for j=1:group
%assign group
if (x(i)-center(j)).^2 <minv
minv = (x(i)-center(j))^2;
belong(i) = j;
end
end
sumA(belong(i)) = sumA(belong(i))+x(i);
sumtimes(belong(i)) = sumtimes(belong(i))+1;
variance(belong(i)) = variance(belong(i))+minv;
minv = 1000000;
end
if abs(sum((belong - oldbelong)))==0;
disp 'completed!'
%variance = variance ./ sumtimes;
% get the average variance.
%variance = mean(variance);
xx = [0:0.001:1];
for i=1:group
% gau(i,:) = exp(-1*(x-center(i)).^2/(2*variance(i)));
% gauu(i,:) = exp(-1*(xx-center(i)).^2/(2*variance(i)));
end
%gau(group+1,:) = ones(1,50);
%figure
%plot(xx,gauu);
break;
end
% calculate new center
center = sumA ./ sumtimes;
sumA = zeros(1,group);
sumtimes = zeros(1,group);
variance = zeros(1,group);
oldbelong = belong;
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -