?? classify.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為總的樣品數(shù),ny為預測集樣品數(shù),nd為定標集樣品數(shù)
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 + -