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类样品,一个样品占一列
X=[X1 X2 X3];
--------- 2、进行初始化------------2
m1 _ pre=x (:1 ); 初始化%类1的平均值,使之成为=x1
m2 _ pre=x (:2 );
m3 _ pre=x (:3 ); 初始化%类2的平均值,使之成为=x2
epsilon=0.001; %收敛阈值
T_max=1000; %最大迭代次数
------------- 3、反复------------------------------3
for t=0:T_max
图形; 绘制%样本平均值
保持打开; plot(m1_pre(2(1,m1_pre ) 2、‘gv’、‘markersize’、10、‘markerfacecolor’、‘g’);
保持打开; plot(m2_pre(2(1,m2_pre ) 2、‘kv’、‘markersize’、10、‘markerfacecolor’、‘k’);
保持打开; plot(m3_pre(2(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(3360,I;
ifnorm(Xi-m1_pre ) norm(Xi-m2_pre ) norm(Xi-m2_pre ) norm ) Xi-m3_pre ) %最小距离确定,norm计算向量的模式
m1=m1 xi;
N1=N1 1;
保持打开; plot(Xi ) 1、Xi ) 2、Xi ) 3、‘go’、‘markersize’、5、‘markerfacecolor’、‘g’);
ELSEifnorm(Xi-m2_pre ) norm (Xi-m1 _ pre (norm ) Xi-m2 _ pre (norm ) Xi-m3_pre ) ) ) ) ) )
m2=m2 xi;
N2=N2 1;
保持打开; plot(Xi ) 1、Xi ) 2、Xi ) 3、‘ko’、‘markersize’、5、‘markerfacecolor’、‘k’);
elsenorm(Xi-m3_pre ) norm (Xi-m1 _ pre (norm ) Xi-m3 _ pre (norm ) Xi-m2_pre ) ) ) ) ) ) )
m3=m3 xi;
N3=N3 1;
保持打开; plot(Xi ) 1、Xi ) 2、Xi ) 3、‘ro’、‘markersize’、5、‘markerfacecolor’、‘r’);
结束
结束
结束
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 );
ifnorm(m1-m1_pre ) epsilonnorm ) m2-m2_pre ) epsilonnorm ) m3-m3_pre ) epsilon %确定是否要停止迭代
黑;
结束
m1_pre=m1; 更新%平均值
m2_pre=m2;
m3_pre=m3;
结束
disp(sprintf )《反复%d次! 》、t ); 显示%迭代次数