⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 classify.m

📁 按照一定的规则
💻 M
字号:
%定标集与预测集的划分程序

m=0;
while m<100
 m=m+1;
[num,txt,raw]=xlsread('tm','sheet1','B2:C97');%读取的工作表第一列为样品编号,第二列为相应的化学值
num2=num;raw2=raw;
[x,y]=size(raw);
ny=floor(x/3);nd=x-ny;  %x为总的样品数,ny为预测集样品数,nd为定标集样品数
Nc=zeros(nd,1);Np=zeros(ny,1);%Nc为定标集样品的编号,Np为预测集样品的编号
Bx=sort(num);                  
t(1)=max(find(Bx(1)==num));%求出化学值的最大值最小值,次大值次小值
t(2)=min(find(Bx(2)==num));
t(3)=max(find(Bx(x-1)==num));
t(4)=min(find(Bx(x)==num));
for i=1:4                    %删除最大值最小值,次大值次小值
    raw2(t(i),:)=[];
    num2(t(i),:)=[];
end
index=rand(x-4,1);
a=sort(index);
for i=1:nd-2
    temp=find(a(i)==index);
    Nc(i)=find(strcmp(raw2(temp),raw));
end
for i=nd-1:x-4
  temp=find(a(i)==index);
  Np(i+2-nd)=find(strcmp(raw2(temp),raw));
end
Nc(nd-1)=t(1);Nc(nd)=t(4);Np(ny-1)=t(2);Np(ny)=t(3);%最大值最小值分到定标集中,次大值次小值分到预测集中
avec=mean(num(Nc));
avep=mean(num(Np));
ave=mean(num);
if abs(avec-avep)/ave<0.0015          %设定误差小于0.15%
    break;
end 
end
m
Nc2=sort(Nc);Np2=sort(Np);
abs(avec-avep)/ave,avec,avep,ave
d=cat(1,'定标样品编号:',raw(Nc2))
y=cat(1,'预测样品编号:',raw(Np2))

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -