MATLAB索引超出矩阵维度,求大神指点错误!

MATLAB索引超出矩阵维度,求大神指点错误!

MATLAB索引超出矩阵维度,求大神指点错误!

最近在做k均值动态聚类的时候,matlab提示索引超出矩阵维度,不知道问题出在哪了。

代码

N1 = 50;
N2 = N1;
N3=N1; % 设置每类样本个数都为50
N = N1+N2+N3;
d = 2; % 设置为二维样本
X1 = rand(d,N1); % 第1类样本,1个样本占1列
X2 = rand(d,N2)+1;
X3=rand(d,N3)+2; % 第2类样本,1个样本占1列
X = [X1 X2 X3];
%----------------------2、初始化----------------------------------
m1_pre = X(:,1); % 初始化第1类均值,令其= x1
m2_pre = X(:,2);
m3_pre=X(:,3); % 初始化第2类均值,令其= x2
epsilon = 0.001; % 收敛阈值
T_max = 1000; % 最大迭代次数
%----------------------3、迭代----------------------------------
for t = 0:T_max
figure; % 画出样本均值
hold on; plot(m1_pre(1),m1_pre(2),‘gv’,‘markersize’,10,‘MarkerFaceColor’,‘g’);
hold on; plot(m2_pre(1),m2_pre(2),‘kv’,‘markersize’,10,‘MarkerFaceColor’,‘k’);
hold on; plot(m3_pre(1),m3_pre(2),‘rv’,‘markersize’,10,‘MarkerFaceColor’,‘r’);
m1 = 0;
m2 = 0;
m3 = 0;
N1 = 0;
N2 = 0;
N3 = 0;
for i = 1:N
xi=X(:,i);
if norm(xi-m1_pre) < norm(xi-m2_pre) && norm(xi-m1_pre) < norm(xi-m3_pre) % 最小距离判别,norm计算向量的模
m1 = m1+xi;
N1 = N1+1;
hold on; plot(xi(1),xi(2),xi(3),‘go’,‘markersize’,5,‘MarkerFaceColor’,‘g’);
else if norm(xi-m2_pre) < norm(xi-m1_pre) && norm(xi-m2_pre) < norm(xi-m3_pre)
m2 = m2+xi;
N2 = N2+1;
hold on; plot(xi(1),xi(2),xi(3),‘ko’,‘markersize’,5,‘MarkerFaceColor’,‘k’);
else norm(xi-m3_pre) < norm(xi-m1_pre) && norm(xi-m3_pre) < norm(xi-m2_pre)
m3 = m3+xi;
N3 = N3+1;
hold on; plot(xi(1),xi(2),xi(3),‘ro’,‘markersize’,5,‘MarkerFaceColor’,‘r’);
end
end
end
m1 = m1/N1;
m2 = m2/N2;
m3 = m3/N3;
t = t+1; % 迭代次数+1
xlabel(‘x_1’,‘fontsize’,16);
ylabel(‘x_2’,‘fontsize’,16);
title(sprintf(‘t=%d’,t),‘fontsize’,20);
if norm(m1 - m1_pre)<epsilon && norm(m2 - m2_pre)<epsilon && norm(m3-m3_pre)<epsilon % 判断是否停止迭代
break;
end
m1_pre = m1; % 更新均值
m2_pre = m2;
m3_pre = m3;
end
disp(sprintf(‘迭代%d次!’,t)); % 显示迭代次数

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值