資源簡介
近紅外光譜快速檢測校正集驗證集劃分方法代碼
代碼片段和文件信息
function?[vSelectedSampleXSelectedYSelected]?=?ks(XYNum)
%********X為樣本光譜特征集,Num為待選擇的樣本數目**********
%********?vSelectedSample為選出的樣本集?*********
%*************KS第一步*************
%***********計算所有樣本之間兩兩之間的歐氏距離,選擇距離最遠的兩個樣本(Z1和Z2)***********
[nRownCol]=size(X);?%?obtain?the?size?of?the?X?matrix?
mDistance=zeros(nRownRow);?%dim?a?matrix?for?the?distance?storage?
vAllofSample=1:nRow;?
for?i=1:nRow-1?
?????
????vRowX=X(i:);?%?obtain?a?row?of?X?
?????
????for?j=i+1:nRow?
?????????
????????vRowX1=X(j:);?%?obtain?another?row?of?X?????????
????????mDistance(ij)=norm(vRowX-vRowX1);?%?calc?the?Euclidian?distance?
??????????????
????end?
?????
end?
%********[ab]?=?max(X)a是每一個列的最大值,b是最大值的位置************
%********min(X)同理*************
%********mDistance是一個行*行的矩陣,第i*j是第i行和第j行的歐氏距離***********
[vMaxvIndexOfmDistance]=max(mDistance);
[nMaxnIndexofvMax]=max(vMax);?
%?nMax是歐氏距離的最大值
%?歐氏距離最大值所在的那個點的列數為nIndexofvMax
%?歐氏距離最大值行數為vIndexOfmDistance的第nIndexofvMax列的值
vSelectedSample(1)=nIndexofvMax;?
vSelectedSample(2)=vIndexOfmDistance(nIndexofvMax);?
%?選出歐氏距離最大的那兩個樣本
%*********KS第二步**************
%?計算剩余z-2個樣本與所選取的兩個樣本(Z1和Z2)的距離,各取最小值,然后選取其中最大值對應的一個樣本Z3進入校正集,
%?計算剩余z-3個樣本與所選擇的這三個樣本之間的距離Z1,Z2,Z3的距離并各選取器最小值,然后選取其中最大值對應的一個樣本Z4
%?重復上述過程,直至選取Num個校正樣本
????for?i=3:Num??
????vNotSelectedSample=setdiff(vAllofSamplevSelectedSampl
評論
共有 條評論