您的位置:首页 > 编程语言 > MATLAB

K-means Matlab代码

2016-08-17 16:58 309 查看
K-means的Matlab实现并没有任何难度,之所以要把今天的代码贴出来,主要因为编码的过程中感觉自己写出的程序效率好弱鸡,想通过张量编码的方式优化优化,但发现好多原函数都忘了【摊手】,只好将弱鸡的代码暂且贴在这里,等撞见好的方法再改进之吧。此外,也提醒提醒自己,遇到美好的代码不应只是欣赏一下就作罢,还应该懂得吸收!

function kmeans(k)
D = rand(2, 30);
C = cell(k);
order = randperm(30);
mu = D(:, order(1:k));

for i=1:20
for l = 1:k
C{l} = [];
end
for j = 1:size(D, 2)
%d = mu - repmat(D(:,j),1,k);
for l = 1:k
d(l) = norm(D(:,j)-mu(:,l));
end

[~,n] = min(d);
C{n}(end+1) = j;
end
for l=1:k
mu(:,l)=sum(D(:,C{l}),2)./size(C{l},2);
end
end
for l=1:k
C{l}
D1 = D(:,C{l});
scatter(D1(1,:),D1(2,:));
hold on
end
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  matlab