     %% I. 清除环境变量
clear all
clc     
%% III. 导入数据  
%% 读入数据
file='表1.xlsx';           
%引号内为文件名，根据需要更改

%下列为读取文件中不同的数据，根据文件中的实际数据种类自行吗，命名。
%主要更改‘=’之前和‘()’内 B2:B3001 部分内容
T=xlsread(file,1,'C2:C1380');              %温度
V=xlsread(file,1,'P2:P1380');              %变形速率
R=xlsread(file,1,'Q2:Q1380');              %变形程度
P=xlsread(file,1,'O2:O1380');              
%将上述列矩阵合并为二维矩阵
input = [T,V,R];                %把以上输入参数放在同一个矩阵
% [IP,TS]=mapminmax(input',0,1);
% input=IP';                                  %将输入数据归一化，方便后续聚类
output=[P];                   %把输出参数放在同一个矩阵
%output=[YS,TS,EL];                    %暂时注释起来，不用，把输出参数放在同一个矩阵
[m,n]=size(input);                      %矩阵的行列数，m是行，n是列
% %% IQR准则剔除异常值
% N1=output(1:m,1);                    %N1是定义的变量，单独选取屈服强度一列的数据      
% Q1=prctile(N1,25);                   %选取上分位点，prctile是固定代码，N1是这个矩阵，25是百分数
% Q2=prctile(N1,75);                   %选取下分位点
% IQR=iqr(N1);                         %间距从25%到75% IQR=Q1-Q2
% num = find(N1<Q1-1.5*IQR | N1>Q2+1.5*IQR);        %找到屈服强度偏离范围行编号矩阵，IQR后面的大竖线或
% output(num,:)=[];                           %删除num矩阵中输出项的行，[]表示空集，冒号放在逗号右边表示所有列
% input(num,:)=[];                              %删除对应num编号的输入项的对应行
% inandout=[input output];              %将输入和输出数据编入同一个矩阵，inandout是自己命名的，此时数据集没有异常数据
% [m,n]=size(input);                %更新输入项目的矩阵的行列数
%% 聚类
%使用Kmeans分类
% K=3;    %K值为上一步观察到的最佳聚类数
% K=6;
K=10;
opts = statset('Display','final');
[idx,cen,sumd,D]=kmeans(input,K,'Replicates',50,'Options',opts);   %将输入组分成K类，idx是对应的分组编号，cen是对应的分组的数据中心位置
% [C1 I1]=unique(idx);         %C1行，I1列，unique是找出43类中的代表，找排在第一位的
% output2=output(I1);        %精简输入输出矩阵
 %% 绘制散点图
%figure;%分三类的图
% gscatter(output(:,1),output(:,2),idx,['b','g','r','m','c'],['^','p','o','s','d','.'])
%gscatter(output(:,1),output(:,2),idx,'','')
%hold on
%scatter(cen(:,1),cen(:,2),300,'m*')
%hold off
% title 'Kmeans分类';
%

%%性能数据分组
value=cell(K,1);
me=zeros(K,7);               
fen=[input idx];

%value_f=cell(1173,4);
%for n1=1:K
   % num(n1)=[n1;];
%end
%for k=1:K;
%n(k)=length(find(idx==k));      %统计每个分类中有多少组数据
%[row col]=find(idx==k);         %把对应分类组号的数据找到
%value_f=[fen(row,:,:)];         %把所有分类的数组取出来，放在同一个结构体中
%me(k,:)=mean(fen(row,:,:));     %进行Kmeans聚类
%value{k,1}=[value_f];          %将结构体进行合并
%end
%me2=sortrows(me,1);            %将分组根据分组号码升序排列
%[a,b]=size(me2);
%me3=[me2,num'];            
%%对分类完的数据组进行排序
figure
%gscatter(me3(:,4),me3(:,1),num);     %求完均值后的散点图,me为求完均值的矩阵
xlabel '分组编号'; 
ylabel '？？？';