该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
有没有大佬无聊磨手指帮我改一下下面的代码,就是换一身衣服,变一下写法,然后结果不变
SA = importdata('ssp_all.txt');
L = importdata('latLon_all.txt');
Time = importdata('time_all.txt');
sa=zscore(SA);
[XSJZ,TZZ]=princomp(sa);
plot(TZZ);
cum_exp = cumsum(TZZ);
A=sa*XSJZ(:,1:3);
[n,p] = size(A);
K=15;D=zeros(K-1,2);T=0;
for k=2:K
T=T+1;
[lable,c,sumd,d]=kmeans(A,k);
sort_num=zeros(k,1);%每类数量
for i=1:k
for j=1:n
if lable(j,1)==i
sort_num(i,1)=sort_num(i,1)+1;
end
end
end
%-----求每类数量-----
sort_ind=sumd./sort_num;%每类类内平均距离
sort_ind_ave=mean(sort_ind);%类内平均距离
%-----求类间平均距离-----
h=nchoosek(k,2);B=zeros(h,2);t=0;sort_outd=zeros(h,1);
for i=1:k-1
for j=i+1:k
t=t+1;
B(t,1)=i;
B(t,2)=j;
end
end
for i=1:h
for j=1:p
sort_outd(i,1)=sort_outd(i,1)+(c(B(i,1),j)-c(B(i,2),j))^2;
end
end
sort_outd_ave=mean(sort_outd);%类间平均距离
%-----求类间平均距离-----
D(T,1)=k;
D(T,2)=sort_ind_ave/sort_outd_ave;
end
plot(D(:,1),D(:,2),'ro')
hold on ,
plot(D(:,1),D(:,2))
K = 4;
opts = statset('Display','final');
[Idx,Ctrs,SumD,D] = kmeans(A,K,'Replicates',3,'Options',opts);
%画出聚类为1的点。X(Idx==1,1),为第一类的样本的第一个坐标;X(Idx==1,2)为第二类的样本的第二个坐标
figure,
scatter3(A(:,1),A(:,2),A(:,3))
scatter3(A(Idx==1,1),A(Idx==1,2),A(Idx==1,3),'r.')
hold on
scatter3(A(Idx==2,1),A(Idx==2,2),A(Idx==2,3),'b.')
hold on
scatter3(A(Idx==3,1),A(Idx==3,2),A(Idx==3,3),'g.')
scatter3(A(Idx==4,1),A(Idx==4,2),A(Idx==4,3),'y.')
legend('Cluster 1','Cluster 2','Cluster 3','Cluster 4')
figure
plot(L.data(Idx==1,2),L.data(Idx==1,1),'r.')
hold on
plot(L.data(Idx==2,2),L.data(Idx==2,1),'b.')
hold on
plot(L.data(Idx==3,2),L.data(Idx==3,1),'g.')
plot(L.data(Idx==4,2),L.data(Idx==4,1),'y.')
t = num2str(Time);
month = str2num(t(:,5:6));
hour = str2num(t(:,7:8));
figure,
plot(month(Idx==1),hour(Idx==1),'r.')
hold on
plot(month(Idx==2),hour(Idx==2),'b.')
hold on
plot(month(Idx==3),hour(Idx==3),'g.')
hold on
plot(month(Idx==4),hour(Idx==4),'y.')